【发布时间】:2015-12-01 10:04:57
【问题描述】:
我有通过 API 使用 sqlite3 db 的 C++ 应用程序 (Linux)。目前 DB 与 RPM 中的二进制文件一起提供。该数据库已经具有所有必需的表。我的应用程序在运行时不会尝试更改任何架构。 现在我必须支持下一个版本的数据库模式升级,因为模式可能会在未来发生变化。知道如何实现这一目标吗?
【问题讨论】:
标签: c++ sqlite sqlalchemy alembic sqlalchemy-migrate
我有通过 API 使用 sqlite3 db 的 C++ 应用程序 (Linux)。目前 DB 与 RPM 中的二进制文件一起提供。该数据库已经具有所有必需的表。我的应用程序在运行时不会尝试更改任何架构。 现在我必须支持下一个版本的数据库模式升级,因为模式可能会在未来发生变化。知道如何实现这一目标吗?
【问题讨论】:
标签: c++ sqlite sqlalchemy alembic sqlalchemy-migrate
Alembic 绝对可以做您想做的事,但鉴于您的应用程序是 C++ 而不是 python,因此在 python 中维护表的所有声明性模型可能不值得付出努力。鉴于您只使用 sqlite,我建议您手动编写 SQL 更新语句,然后从 alembics 书中取出一片叶子并创建一个带有一个条目的版本表 - 当前数据库版本。
当您的应用启动时,检查当前数据库版本并按顺序运行您的迁移脚本,直到您将数据库迁移到最新版本。
PS:帮自己一个忙,还要写降级脚本。如果您出于任何原因需要回滚,这些将很方便
【讨论】: