I am working on database connectivity in Python 3.4. There are two columns in my database.
Below is the query which gives me all the data from two columns in shown f
As the output you given [('F:\\test1.py', '12345abc'), ('F:\\test2.py', 'avcr123')]
for i, row in data:
print(i) # i is column1's value
print(row)# row is column's value
So you don't need row[i] or row[j], that was wrong, in that each step of that iteration
for i, row in data
is the same as i, row = ('abc', 'def') it set abc to variable i and 'def' to row
BTW ,I don't know what database you use, if you use Mysql and python driverMySQL Connector, you can checkout this guide to fetch mysql result as dictionary
you can get a dict in iteration, and the keys is your table fields' name. I think this method is convenient more.
To iterate over and print rows from cursor.fetchall() you'll just want to do:
for row in data:
print row
You should also be able to access indices of the row, such as row[0], row[1], iirc.
Of course, instead of printing the row, you can manipulate that row's data however you need. Imagine the cursor as a set of rows/records (that's pretty much all it is).
looking at
[('F:\\test1.py', '12345abc'), ('F:\\test2.py', 'avcr123')]
i j i j
you are taking a strings i and j and indexing it like
print(row['F:\\test1.py'])
print(row['12345abc'])
which gave you typeError
TypeError: string indices must be integers
this is because i in data is a string and your a indexing this
try this
for i,j in data:
print(i)
print(j)
To iterate through this: [('F:\test1.py', '12345abc'), ('F:\test2.py', 'avcr123')]
Code:
for i in data:
print i[0] + '\t' + i[1]
Output:
F:\test1.py 12345abc
F:\test2.py avcr123
It looks like you have two colunms in the table, so each row will contain two elements.
It is easiest to iterate through them this way:
for column1, column2 in data:
That is the same as:
for row in data:
column1, column2 = row
You could also, as you tried:
for row in data:
print row[0] # or row[i]
print row[1] # or row[j]
But that failed because you overwrote i with the value of first column, in this line: for i, row in data:.
EDIT
BTW, in general, you will never need this pattern in Python:
i = 0
for ...:
...
i += 1
Instead of that, it is common to do simply:
for item in container:
# use item
# or, if you really need i:
for i, item in enumerate(container):
# use i and item