我正在尝试学习SQLite 3的基础知识。我创建了一个表并尝试打印结果:
import sqlite3
def main():
db = sqlite3.connect('test.db')
db.execute('drop table if exists test')
db.execute('create table test (t1 text, i1 int)')
db.execute('insert into test (t1, i1) values (?, ?)', ('one', 1))
db.execute('insert into test (t1, i1) values (?, ?)', ('two', 2))
db.execute('insert into test (t1, i1) values (?, ?)', ('three', 3))
db.execute('insert into test (t1, i1) values (?, ?)', ('four', 4))
db.commit()
cursor = db.execute('select i1, t1 from test order by i1')
for row in cursor:
print (row)
if __name__ == "__main__": main()
print语句工作正常但它显示的值如下:
>>>
(1, u'one')
(2, u'two')
(3, u'three')
(4, u'four')
>>>
它包含一个附加字符u
(指定一个unicode字符串)。如何在没有此u
前缀的情况下打印值?
我注意到这只发生在Python 2.7中,而在Python 3.3.2中它可以正常工作。
答案 0 :(得分:2)
你可以unpack cursor
这样:
for a,b in cursor:
print a,b
参见下面的演示:
>>> cursor = [(1, u'one'), (2, u'two'), (3, u'three'), (4, u'four')]
>>> for a,b in cursor:
... print a,b
...
1 one
2 two
3 three
4 four
>>>
答案 1 :(得分:1)
我建议你这样做
for row in cursor:
print(row[0], row[1])
话虽如此,我怀疑你是在运行Python 3.x。
print((1, u'aaa'))
产量
(1, 'aaa')
在Python 3.3和
上(1, u'aaa')
在Python 2.7上。