我正在使用flask sqlalchemy创建db,而db又创建了一个app.db文件来存储表和数据。现在对于备份来说,只需在服务器中的某处获取app.db的副本即可。但是假设当应用程序将数据写入app.db并且我们当时制作副本时,我们可能会有不一致的app.db文件。
我们如何保持备份的一致性。我可以实现锁定。但我想知道数据库备份的标准和良好的解决方案,以及如何在python中实现。
答案 0 :(得分:0)
SQLite为此提供了backup API,但它在内置的Python驱动程序中不可用。
你可以
sqlite3
command-line shell中的.backup
命令;或答案 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”或您需要设置的任何其他权限来添加权限。