2014-05-18 41 views
0

嗨,我有這個愚蠢的問題,但我想確定。我已經創建了基於sqlite3的數據庫。我在1000k操作後觸發commit(),所以我不會有太多的磁盤I/O。當我在數據庫上尋找數據時,select查詢將僅在數據庫文件中搜索還是將檢查未被取消的數據?提交數據在sqlite3 python

謝謝。

+0

[在sqlite3中可能的重複,可以在插入事務中選擇成功?](http://stackoverflow.com/questions/376773/in-sqlite3-can-a-select-succeed-within-a-交易的插入) –

+0

http://stackoverflow.com/a/376799/705086準確,但在同一連接你看到未經編譯的數據。在另一個連接上你不知道,這就是爲什麼另一個進程沒有看到它。 –

回答

1

交易允許隔離和原子性關於其他數據庫的用戶。 您所做的任何更改都會立即顯示在您自己的連接中。

+0

因此,在我的程序中可以看到未定義的數據。如果數據庫是公開的,其他人將不會看到這些數據,對吧? – bill

+0

雖然它們對於使用數據庫的其他程序不可見,但它們只會在發出INSERT語句的同一個連接中對程序可見。您自己程序中的其他同時連接將不會看到數據。如果僅使用單個數據庫連接,則不會造成問題,但如果使用多個連接,則可能會造成混淆。 –

0

如果您正在使用與讀寫數據庫相同的SQLite連接,那麼寫入的效果將如預期般顯示給讀者。

如果使用不同連接 - 即使在同一個話題 - 閱讀和寫作,讀者將看不到未提交寫入數據庫,除非你去,而顯著的長度,以允許它這樣做。