2010-07-16 79 views
2

我正在開發一個需要同時支持Python 2.5和2.6並使用sqlite3的項目。我希望能夠從程序內備份數據庫。在Python 2.5中備份sqlite3數據庫

似乎有兩種方法可以做到這一點:在sqlite3中創建一個新的數據庫並移動所有的數據,或者直接複製驅動器上的數據庫文件。

我的直覺(以及我想在這裏測試的一部分)是在系統中複製數據更安全,因爲它會確保我不試圖複製處於不穩定狀態的文件。雖然我可以防止許多基本錯誤,但是防止複製文件時出現所有可能的錯誤將是一項挑戰。

但是,由於我支持python 2.5,我沒有iterdump()在我的處置,在程序中創建備份將是非常耗時(使文件複製誘惑)。

直接複製文件有什麼優點和缺點? 2.5中有一種簡單的方法來以類似於2.6的iterdump()的方式複製所有數據庫嗎?

回答

0

我在黑暗中拍攝,不知道Python但熟悉SQLite3。

優點

  • 安全備份,因爲SQLite數據庫是單個文件
  • 向下兼容您丟失iterdump()功能。

缺點

  • 數據庫大小可能禁止複製。
3

複製SQLite3的文件,該文件目前正在使用可工作的99%的時間,but it's not safe,因爲我學到了艱辛的道路。我的意思是,你實際上可以複製數據庫文件本身,但是你必須絕對確保數據庫文件的所有文件句柄都已關閉,否則你就會冒着你擔心的情況。

這裏有兩種選擇:

  1. 使用dump a system call to the command line

這是偉大的,因爲它轉儲數據庫與一組SQL語句將重建爲你從頭開始的文件,並在一步中使用gzip壓縮它。然後備份生成的.gz文件的副本,就完成了。

使用 sqlite3 command line shell
  • 轉儲