我使用 SQLite 作为基于 PySide 的桌面应用程序的应用程序文件格式(请参阅 给你了解为什么要这样做)。也就是说,当用户使用我的应用程序时,他们的数据被保存在他们机器上的单个数据库文件中。我正在使用 SQLAlchemyORM 与数据库进行通信。
当我发布应用程序的新版本时,我可能会修改数据库模式。我不希望用户在我每次更改模式时都必须丢弃他们的数据,所以我需要将他们的数据库迁移到最新的格式。此外,我还创建了许多临时数据库,以保存数据的子集,以便与一些外部进程一起使用。我想创建这些数据库与 alembic,使他们与正确的版本标记。
我有几个问题:
有没有办法从 Python 代码中调用 alembic?我认为将 Popen
用于纯 Python 模块很奇怪,但文档只是从命令行使用 alembic。主要是,我需要更改数据库位置到用户的数据库所在的位置。
如果不可能,我可以从命令行指定一个新的数据库位置而不编辑。Ini 文件?这将使得通过 Popen
呼叫 Alembic 变得不那么重要。
我看到 alembic 将其版本信息保存在一个名为 alembic_version
的简单表中,其中一列名为 version_num
,一行指定版本。当我创建新数据库时,是否可以在模式中添加一个 alembic_version
表并用最新版本填充它,这样就没有开销了?这是一个好主意吗; 我应该仅仅使用 alembic 来创建所有的数据库吗?
我有阿伦比克工作伟大的单一数据库,我用来开发与我的项目的目录。我想使用 alembic 方便地迁移和创建任意位置的数据库,最好是通过某种 Python API,而不是命令行。这个应用程序也会被 cx _ Frost 冻结,以防有什么不同。
谢谢!