【问题标题】:Backing up sqlite3 database in Python 2.5在 Python 2.5 中备份 sqlite3 数据库
【发布时间】:2010-07-16 13:21:42
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python sqlite


    【解决方案1】:

    复制当前正在使用的 SQLite3 文件可能在 99% 的情况下都有效,but it's not safe,因为我学到了很多东西。我的意思是,您实际上可以复制数据库文件本身,但您必须绝对确保数据库文件的所有文件句柄都已关闭,否则您将面临您所关注的情况。

    这里有两个选项:

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

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

    1. 使用sqlite3 command line shell 转储

    【讨论】:

      【解决方案2】:

      我正在摸索,不懂 Python 但熟悉 SQLite3。

      优点

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

      缺点

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

      【讨论】:

        猜你喜欢
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        • 2014-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多