为什么没有打印行?

时间:2012-11-09 16:14:54

标签: python sqlite

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

我正在使用相同的数据库,我在尝试选择之前插入了数据。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

您需要commit插页:

conn.commit()

只有在提交事务时,sqlite才会永久地将行写入数据库。引自文档:

  

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

或者,您可以将connection isolation level设置为None以自动提交更改。

conn.isolation_level = None