在python2.5中备份sqlite3数据库

2024-09-26 05:01:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个需要同时支持python2.5和2.6的项目,并且使用sqlite3。我希望能够从程序内备份数据库。在

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

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

但是,由于我支持Python2.5,因此我无法使用iterdump(),因此在程序中创建备份将非常耗时(这使得文件副本非常诱人)。在

直接复制文件的优缺点是什么?在2.5中,有没有一种简单的方法可以像2.6中的iterdump()那样复制所有数据库?在


Tags: 文件数据项目方法程序数据库内容状态
2条回答

复制当前正在使用的SQLite3文件可能在99%的时间内有效,but it's not safe,这是我很难理解的。我的意思是,你实际上可以复制DB文件本身,但是你必须绝对确定DB文件的所有文件句柄都是关闭的,否则你就要冒你所担心的情况的风险。在

有两种选择:

  1. 使用a system call to the command line转储

这很好,因为它将数据库转储到一个包含一组SQL语句的文件中,这些语句将从头开始为您重建数据库,并使用gzip在一个步骤中压缩它。然后备份生成的.gz文件的副本,就完成了。在

  1. 使用sqlite3 command line shell转储

我在黑暗中尝试,不了解Python,但熟悉SQLite3。在

专业人士

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

缺点

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

相关问题 更多 >