从表名选择*,只给我一个列作为结果

2024-06-25 06:03:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python2.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编码添加到连接中,但结果仍然相同,我使用了c.execute('PRAGMA encoding="UTF-8";')


Tags: lambdaexecutefactoryconnselectsqlite3rowfetchall
2条回答

找到答案,由于元组项不能接受编码,我对整个文档应用了utf-8编码# -*- coding: utf-8 -*-,并从列表中逐个提取名称作为str,结果现在是固定的:

以下是更新的代码:

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

import sqlite3 

conn = sqlite3.connect('storage/container.db')
c = conn.cursor()
c.execute("SELECT * FROM reports")
for row in c.fetchall():
    for names in row:
        print names
  • 在上述问题上。你知道吗

    你知道吗conn.row\ U工厂=λc,行:行[0]

您正在显式调用第一行[0],您只得到一列。 根据列数,按行[0]、行[1]、行[2]进行尝试。你知道吗

相关问题 更多 >