有没有标准方法将数据库模式存储在Python应用之外?

2 投票
5 回答
731 浏览
提问于 2025-04-15 22:36

我正在用Python(目前主要针对2.5和2.6版本)开发一个小型数据库应用,使用的是sqlite3。

我希望能有一系列功能,帮助我设置数据库,并验证它是否符合当前的结构设计。在我自己重新发明轮子之前,我想先看看有没有类似的库可以使用。我希望能找到一些像RoR(Ruby on Rails)中的迁移功能那样的东西。xml2ddl看起来并不是一个专门的库(虽然可以这样使用),而且更重要的是,它不支持sqlite3。我也担心有一天需要迁移到Python 3,因为最近对xml2ddl的关注不多。

有没有其他工具可以帮助处理这个问题呢?

5 个回答

1

我使用这个工具来保持数据库结构的一致性。

需要注意的是,它会添加一个元数据表,用来记录版本信息。

2

看看这个 SQLAlchemy migrate。我觉得把它当作迁移工具来用没什么问题,但把配置和当前数据库的状态进行比较还处于实验阶段。

3

你可以通过以下方式找到sqlite3表的结构:

import sqlite3
db = sqlite3.connect(':memory:')
c = db.cursor()
c.execute('create table foo (bar integer, baz timestamp)')
c.execute("select sql from sqlite_master where type = 'table' and name = 'foo'")
r=c.fetchone()
print(r)
# (u'CREATE TABLE foo (bar integer, baz timestamp)',)

撰写回答