这不是sqlite特定的,但我在学习python和sqlite3并列出查询结果时感到奇怪。我有简单的代码:
connection = sqlite3.connect("db.sqlite")
cursor = connection.cursor()
cursor.execute("select * from db")
print cursor.fetchall()
因此,print cursor.fetchall()
的结果是:[(u'koko',), (u'lolo',)]
但是,当我尝试用这段代码重新创建那种打印时:
i=["koko","lolo"]
print i
打印结果为:['koko', 'lolo']
我不明白的两件事:
(u'koko',)
而第二个没有?第一个列表是元组列表吗?
答案 0 :(得分:3)
列表中有括号,因为这就是python打印tuple
的方式。
对比:
a = 'foo'
print a,type(a)
使用:
b = ('foo',)
print b,type(b)
另请注意,在python2.x中,有不同类型的字符串。 unicode
只是一种字符串,python选择将其表示为u'whatever'
:
>>> print u'whatever'
whatever
>>> print repr(u'whatever')
u'whatever'
请注意str(tup)
隐式调用元组中每个元素的repr
。
答案 1 :(得分:3)
[(u'koko',), (u'lolo',)]
是unicode字符串的1元素元组列表。
["koko","lolo"]
是一个字节字符串列表。
答案 2 :(得分:2)
您可能希望操纵结果以使其适应您想要的格式......
rows = cursor.fetchall()
result = [elem[0] for elem in rows]
...也许可以将函数应用于elem [0](取决于你的python版本),以便以你想要的格式输入字符串。