我正在使用Python 3.4中的数据库连接.我的数据库中有两列.
下面是查询,它以两种显示的格式QUERY为我提供了所有数据:
cur.execute(""" select * from filehash """)
data=cur.fetchall()
print(data)
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
[('F:\\test1.py', '12345abc'), ('F:\\test2.py', 'avcr123')]
Run Code Online (Sandbox Code Playgroud)
要遍历此输出,我的代码如下所示
cur.execute(""" select * from filehash """)
data=cur.fetchall()
i=0
j=1
for i,row in data:
print(row[i])
print(row[j])
i=i+1
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误
print(row[i])
TypeError: string indices must be integers
Run Code Online (Sandbox Code Playgroud)
让我知道我们如何处理个人价值观 fetchall()
看起来您在表中有两列,因此每行将包含两个元素。
以这种方式遍历它们是最简单的:
for column1, column2 in data:
Run Code Online (Sandbox Code Playgroud)
这与:
for row in data:
column1, column2 = row
Run Code Online (Sandbox Code Playgroud)
你也可以,因为你试过:
for row in data:
print row[0] # or row[i]
print row[1] # or row[j]
Run Code Online (Sandbox Code Playgroud)
但是失败了,因为你改写i与第一列的值,在这一行:for i, row in data:。
编辑
顺便说一句,一般来说,在 Python 中你永远不需要这种模式:
i = 0
for ...:
...
i += 1
Run Code Online (Sandbox Code Playgroud)
取而代之的是,通常简单地执行以下操作:
for item in container:
# use item
# or, if you really need i:
for i, item in enumerate(container):
# use i and item
Run Code Online (Sandbox Code Playgroud)
小智 2
要迭代并打印行,cursor.fetchall()您只需执行以下操作:
for row in data:
print row
Run Code Online (Sandbox Code Playgroud)
您还应该能够访问行的索引,例如row[0]、row[1]、 iirc。
当然,您可以根据需要操作该行的数据,而不是打印该行。将光标想象为一组行/记录(这几乎就是全部)。
| 归档时间: |
|
| 查看次数: |
29817 次 |
| 最近记录: |