我正在开发一个需要支持Python 2.5和2.6的项目,并使用sqlite3。我希望能够从程序中备份数据库。
似乎有两种方法可以做到这一点:在sqlite3中创建一个新数据库并移动所有数据,或者只是复制驱动器上的数据库文件。
我的直觉(以及我想在这里测试的一部分)是在系统中复制数据更安全,因为它会确保我不会尝试复制处于不稳定状态的文件。虽然我可以防止许多基本错误,但是在复制文件时防止所有可能的错误将是一个挑战。
但是,由于我支持python 2.5,我没有iterdump()可供使用,在程序中创建备份会非常耗时(使文件复制很诱人)。
直接复制文件的优缺点是什么?是否有一种简单的方法在2.5中以类似于2.6的iterdump()的方式复制所有数据库?
答案 0 :(得分:3)
当我学到很多困难时,复制当前正在使用的SQLite3文件可能会有99%的时间工作but it's not safe。我的意思是,你实际上可以复制数据库文件本身,但你必须绝对确保数据库文件的所有文件句柄都已关闭,否则你可能会冒险关注你所关注的情况。
以下是两个选项:
这很好,因为它将数据库转储到一个带有一组SQL语句的文件,这些语句将从头开始为你重建它,并在一步中使用gzip压缩它。然后,您备份生成的.gz文件的副本,然后就完成了。
答案 1 :(得分:0)
我在黑暗中拍摄,不了解Python,但熟悉SQLite3。
<强>赞成强>
iterdump()
功能。<强>缺点强>