0

我一直在关注 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)

我使用的是同一个数据库,并且在尝试选择它之前我已经插入了数据。

我究竟做错了什么?

4

1 回答 1

4

您需要提交您的插入:

conn.commit()

只有当您提交事务时,sqlite 才会将行永久写入数据库。从文档中引用:

此方法提交当前事务。如果您不调用此方法,那么自上次调用以来您所做的任何事情commit()都不会从其他数据库连接中看到。如果您想知道为什么看不到已写入数据库的数据,请检查您是否忘记调用此方法。

或者,您可以将连接隔离级别设置None为自动提交更改。

conn.isolation_level = None
于 2012-11-09T16:15:52.650 回答