簡體   English   中英

Flask sqlalchemy 中的 Sqlite 數據庫備份和恢復

[英]Sqlite database backup and restore in flask sqlalchemy

我正在使用 Flask sqlalchemy 創建 db,后者又創建一個 app.db 文件來存儲表和數據。 現在備份應該很簡單,只需在服務器中的某處獲取 app.db 的副本即可。 但是假設當應用程序正在將數據寫入 app.db 並且我們在那時進行復制時,我們可能會有不一致的 app.db 文件。

我們如何保持備份的一致性。 我可以實現鎖來做到這一點。 但我想知道數據庫備份的標准和良好的解決方案,以及這是如何在 python 中實現的。

SQLite 為此提供了備份 API ,但它在內置 Python 驅動程序中不可用。

你可以

我還想為我的 SQL 文件創建備份,該文件存儲來自 Flask 的數據。 由於我的 Flask web 沒有太多用戶,並且數據庫不攜帶超過 4 個中小型表,我做了以下操作:

#Using Linux cmd
cd pathOfMyDb
nano backupDbRub.sh # backupDBRun is the name of the file that will be called periodically

Nano文本編輯器將打開一個文件,您可以編寫以下內容

#!/bin/bash

current_time=$(date "+%Y.%m.%d-%H.%M.%S");
sep='"';
file_name = '_site.db"';

functionB = '.backup ';

queryWrite = "$functionB$sep$current_time$file_name";

echo "$queryWrite";

sqlite3 yoursqlitefile.db  "$queryWrite" 

基本上使用這段代碼,我們創建了一個函數 ($queryWrite),它將使用時間戳復制當前數據庫。 現在在 Unix 中,您必須修改 crontab 文件。 在 Unix 終端中寫入

crontab -e

在這個新的文件,如在此解釋,你應該添加周期(在我的情況下,測試意,我想運行它每分鍾檢查它是否工作。

* * * * * /backupDbRub.sh

認為副本將出現在您在 $querywrite 語句中選擇的文件夾中。 所以你可以在那里找到它們。

如果您想測試該腳本是否有效,您必須轉到該腳本所在的文件夾並運行/backupDbRub.sh這應該會打印文件中調用的“echo”語句。 有時您沒有在此文件中提供權限,因此您應該使用“chmod -x”或您需要設置的任何其他權限來添加權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM