在Python 2.5中备份sqlite3数据库

时间:2010-07-16 13:21:43

标签: python sqlite

我正在开发一个需要支持Python 2.5和2.6的项目,并使用sqlite3。我希望能够从程序中备份数据库。

似乎有两种方法可以做到这一点:在sqlite3中创建一个新数据库并移动所有数据,或者只是复制驱动器上的数据库文件。

我的直觉(以及我想在这里测试的一部分)是在系统中复制数据更安全,因为它会确保我不会尝试复制处于不稳定状态的文件。虽然我可以防止许多基本错误,但是在复制文件时防止所有可能的错误将是一个挑战。

但是,由于我支持python 2.5,我没有iterdump()可供使用,在程序中创建备份会非常耗时(使文件复制很诱人)。

直接复制文件的优缺点是什么?是否有一种简单的方法在2.5中以类似于2.6的iterdump()的方式复制所有数据库?

2 个答案:

答案 0 :(得分:3)

当我学到很多困难时,复制当前正在使用的SQLite3文件可能会有99%的时间工作but it's not safe。我的意思是,你实际上可以复制数据库文件本身,但你必须绝对确保数据库文件的所有文件句柄都已关闭,否则你可能会冒险关注你所关注的情况。

以下是两个选项:

  1. 使用a system call to the command line转储
  2. 这很好,因为它将数据库转储到一个带有一组SQL语句的文件,这些语句将从头开始为你重建它,并在一步中使用gzip压缩它。然后,您备份生成的.gz文件的副本,然后就完成了。

    1. 使用sqlite3 command line shell
    2. 转储

答案 1 :(得分:0)

我在黑暗中拍摄,不了解Python,但熟悉SQLite3。

<强>赞成

  • 安全备份,因为SQLite数据库是单个文件
  • 向后兼容您丢失的iterdump()功能。

<强>缺点

  • 数据库大小可能会禁止重复。