在Python程序中使用SQLite

我创建了一个Python模块,用于创建和填充多个SQLite表。 现在,我想在程序中使用它,但我真的不知道如何正确调用它。 我发现的所有教程基本上都是“内联”的,即他们以线性方式使用SQLite,而不是如何在生产中实际使用它。

我想要做的是有一个方法检查,看看数据库是否已经创建。 如果是这样,那么我可以使用它。 如果没有,则引发异常,程序将创建数据库。 (或使用if / else语句,以较好者为准)。

我创建了一个测试脚本来查看我的逻辑是否正确,但它不起作用。 当我创建try语句时,它只是创建一个新的数据库,而不是检查是否已经存在。 下一次运行该脚本时,即使我尝试捕获该异常,我也会得到该表已存在的错误。 (我没有使用过,除了之前,但认为这是学习的好时机)。

有没有任何好的教程使用SQLite操作或任何建议如何编码? 我已经通过pysqlite教程和其他人发现,但他们没有解决这个问题。


AFAIK一个SQLITE数据库只是一个文件。 要检查数据库是否存在,请检查文件是否存在。

当你打开一个SQLITE数据库时,它会自动创建一个,如果备份它的文件不在位。

如果你尝试打开一个不是数据库的sqlite3数据库文件,你会得到这个:

“sqlite3.DatabaseError:文件被加密或不是数据库”

因此请检查文件是否存在,并确保在文件不是sqlite3数据库的情况下尝试捕获异常


不要让它比需要的更复杂。 大型独立数据库具有复杂的设置和配置要求。 SQLite只是一个你用SQL访问的文件,它更简单。

请执行下列操作。

  • 为“组件”或“版本”或“配置”或“发布”或类似的管理添加一个表到数据库。

    CREATE TABLE REVISION(RELEASE_NUMBER CHAR(20));

  • 在你的应用程序中,正常连接到你的数据库。

  • 针对修订表执行简单的查询。 以下是可能发生的事情。
  • 查询无法执行:您的数据库不存在,因此请执行一系列CREATE语句来构建它。
  • 查询成功但不返回任何行或发行版号低于预期:数据库存在,但已过期。 您需要从该版本迁移到当前版本。 希望你有一系列的DROP,CREATE和ALTER语句来做到这一点。
  • 查询成功,并且发行版号是预期值。 别无所求,您的数据库配置正确。

  • SQLite会在您第一次尝试使用它时自动创建数据库文件。 用于创建表的SQL语句可以使用IF NOT EXISTS来使命令仅在表未被创建时才会生效。这样您就不需要事先检查数据库的存在:SQLite可以为您解决这个问题。

    我仍然会担心的主要问题是,对于每个Web事务(比如说)执行CREATE TABLE IF EXISTS都是低效的; 你可以通过让程序保存一个(内存中)变量来说明它是否已经创建了数据库,所以它每次运行一次运行CREATE TABLE脚本。 这仍然允许您删除数据库并在调试过程中重新开始。

    链接地址: http://www.djcxy.com/p/7319.html

    上一篇: Using SQLite in a Python program

    下一篇: Safely create a file if and only if it does not exist with python