我一直在关注Python示例@ http://docs.python.org/2/library/sqlite3.html#sqlite3
import sqlite3
conn = sqlite3.connect("tweet.db")
c = conn.cursor()
for row in c.execute('SELECT * FROM stocks ORDER BY price'):
print row
conn.close()
但除非我有以下行,否则行不会打印:
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
('2006-04-06', 'SELL', 'IBM', 500, 53.00),
]
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)
我正在使用相同的数据库,我在尝试选择之前插入了数据。
我做错了什么?
答案 0 :(得分:4)
您需要commit插页:
conn.commit()
只有在提交事务时,sqlite才会永久地将行写入数据库。引自文档:
此方法提交当前事务。如果不调用此方法,则自上次调用
commit()
以来所执行的任何操作都不会从其他数据库连接中看到。如果您想知道为什么没有看到您写入数据库的数据,请检查您是否忘记调用此方法。
或者,您可以将connection isolation level设置为None
以自动提交更改。
conn.isolation_level = None