SELECT * FROM table_name只给我一列作为结果

时间:2018-03-28 10:34:24

标签: python sqlite

我正在使用python 2.7和sqlite3作为DB,我试图从这个表中调用:

enter image description here

使用此代码:

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";')

2 个答案:

答案 0 :(得分:0)

找到答案,因为元组项目不能接受编码,我将utf-8编码varchar应用于整个文档,并从列表中逐个提取名称,结果现在已修复:< / p>

这是更新的代码:

# -*- coding: utf-8 -*-

答案 1 :(得分:0)

  • 在上述问题中。

    conn.row_factory = lambda c,row:row [0]

您显式调用第一行[0],您只获得一列。 可以按行[0],行[1],行[2]进行尝试,具体取决于列数。