我正在使用python 2.7和sqlite3作为DB,我试图从这个表中调用:
使用此代码:
conn = sqlite3.connect('storage/container.db')
conn.row_factory = lambda c, row: row[0]
c = conn.cursor()
c.execute("SELECT * FROM reports")
for row in c.fetchall():
print row
结果是:
0
1204
这只是id
列,尽管我使用fetchall()
并使用SELECT *
删除conn.row_factory = lambda c, row: row[0]
后,结果为:
(0, u'\u062f\u062e\u0648\u0644', u'\u0643\u0631\u0633\u0649', 8, u'\u0623\u062d\u0645\u062f \u0648\u062c\u062f\u0649', u'2018-03-28')
(1204, u'\u062e\u0631\u0648\u062c', u'\u0643\u0631\u0633\u0649', 3, u'\u0623\u062d\u0645\u062f \u0648\u062c\u062f\u0649', u'2018-03-28')
然后尝试将utf-encoding添加到连接但仍然是相同的结果,我使用了c.execute('PRAGMA encoding="UTF-8";')
答案 0 :(得分:0)
找到答案,因为元组项目不能接受编码,我将utf-8编码varchar
应用于整个文档,并从列表中逐个提取名称,结果现在已修复:< / p>
这是更新的代码:
# -*- coding: utf-8 -*-
答案 1 :(得分:0)
在上述问题中。
conn.row_factory = lambda c,row:row [0]
您显式调用第一行[0],您只获得一列。 可以按行[0],行[1],行[2]进行尝试,具体取决于列数。