请注意,这是不正确且过于复杂的答案
正确的方法是使用这里index.create
所说的。
首先确保您拥有数据库的最新快照并且能够从该快照恢复数据库。
对于中型和大型项目(您可能需要同时支持多个版本并安装在多个环境中的项目),有一个特殊的过程是数据库管理生命周期的一部分,称为“数据库迁移”。数据库迁移包括对现有架构的更改。SQLAlchemy 不支持开箱即用的迁移。
有两种 SQLAlchemy 兼容的数据库迁移工具可用:
在 SQLAlchemy 文档页面中查看更多信息和这些工具的链接:Altering Schemas through Migrations。
但是,如果您正在处理小型项目,我建议您从数据库命令行实用程序或通过 python 脚本中的 connection.execute() 手动运行 ALTER TABLE DDL 查询。
在我现在工作的生产应用程序中,我们只支持一个最新版本的应用程序。对于每个数据库架构更改,我们执行以下步骤:
- 制作生产数据库的快照
- 在开发环境中加载此快照
- 更新 sqlalchemy 数据模型模块
- 准备并运行更改表查询并保存此查询以供以后使用
- 对代码进行其他相关更改
- 在开发环境上运行测试
- 将最新版本的代码部署到生产环境
- 在生产中更改表
此外,我使用以下技巧来生成创建表/索引查询:我将我的应用程序指向全新的数据库,启用 sqlalchemy 查询的日志记录并运行metadata.create_all()
- 所以在日志(或 STDOUT)中,我看到由 sqlalchemy 生成的创建查询
根据您所使用的数据库系统,索引创建查询会略有不同。通用查询如下所示:
create index targets_i on targets(url);