2012-11-09 186 views
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

您需要commit您插入:

conn.commit() 

只有當你提交你的交易不sqlite的寫行數據庫中永久。從文檔引用:

此方法提交當前事務。如果您不調用此方法,則自從上次調用commit()以來所做的任何操作都不可見於其他數據庫連接。如果您想知道爲什麼您沒有看到您寫入數據庫的數據,請檢查您是否忘記調用此方法。

或者,您可以將connection isolation level設置爲None以自動提交更改。

conn.isolation_level = None 
+0

這似乎很明顯,我沒有編碼一段時間。謝謝。 – Sheldon