在sqlalchemy中进行Sqlite数据库备份和恢复

时间:2018-05-01 08:16:16

标签: python sqlite flask flask-sqlalchemy

我正在使用flask sqlalchemy创建db,而db又创建了一个app.db文件来存储表和数据。现在对于备份来说,只需在服务器中的某处获取app.db的副本即可。但是假设当应用程序将数据写入app.db并且我们当时制作副本时,我们可能会有不一致的app.db文件。

我们如何保持备份的一致性。我可以实现锁定。但我想知道数据库备份的标准和良好的解决方案,以及如何在python中实现。

2 个答案:

答案 0 :(得分:0)

SQLite为此提供了backup API,但它在内置的Python驱动程序中不可用。

你可以

答案 1 :(得分:0)

我还想为我的 SQL 文件创建备份,该文件存储来自 Flask 的数据。 由于我的 Flask web 没有太多用户,而且数据库不携带超过 4 个中小型表,我做了以下操作:

#!/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" 

Nano 文本编辑器将打开一个文件,您可以编写以下内容

crontab -e

基本上使用这段代码,我们创建了一个函数 ($queryWrite),它将使用时间戳复制当前数据库。现在在 Unix 中,您必须修改 crontab 文件。 在Unix终端写入

* * * * * /backupDbRub.sh

在这个新文件中,如本 post 中所述,您应该添加周期性(在我的情况下,出于测试目的,我想每分钟运行一次以检查它是否正常工作。

/backupDbRub.sh

认为副本将出现在您在 $querywrite 语句中选择的文件夹中。所以你可以在那里找到它们。

如果您想测试脚本是否有效,则必须转到此脚本所在的文件夹并运行 {{1}} 这应该打印文件中调用的“echo”句子。有时您没有在此文件中提供权限,因此您应该使用“chmod -x”或您需要设置的任何其他权限来添加权限。