是否存在在python应用程序外部存储数据库模式的标准方法

时间:2010-05-12 02:43:40

标签: python sqlite

我正在使用sqlite3开发Python中的小型数据库应用程序(目前以2.5和2.6为目标)。

能够提供一系列可以设置数据库并验证它是否与当前模式匹配的函数将会很有帮助。在我重新发明轮子之前,我以为我会四处寻找可以提供类似功能的库。我喜欢有类似于RoR迁移的东西。 xml2ddl似乎不是一个库(尽管可以这样使用),更重要的是不支持sqlite3。由于最近没有关注xml2ddl,我也担心有一天需要转向Python 3。

是否还有其他工具可供人们使用来处理此问题?

4 个答案:

答案 0 :(得分: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)',)

答案 1 :(得分:2)

看看SQLAlchemy migrate。我认为仅使用它作为迁移工具没有问题,但是将配置与当前数据库状态进行比较尚未实验。

答案 2 :(得分:1)

我使用this来保持模式同步。

请记住,它会添加一个元数据表来跟踪版本。

答案 3 :(得分:0)

South是我所知道的最接近RoR迁移的人。但正如您需要Rails进行迁移一样,您需要django才能使用南方。