cha*_*arn 6 python sqlalchemy flask alembic
我可以使用该命令创建表alembic revision -m 'table_name',然后定义版本并使用迁移alembic upgrade head.
此外,我可以通过在models.py(SQLAlchemy)中定义一个类来在数据库中创建表.
两者有什么区别?我很困惑.我弄乱了这个概念吗?
另外,当我使用Alembic迁移数据库时,为什么它不能在我的新类中形成models.py?我知道这些表已经创建,因为我使用SQLite浏览器检查了它们.
我已经完成了所有配置.用于蒸馏器的数据库和目标SQLALCHEMY_DATABASE-URI中config.py是相同的.db文件.
Mig*_*uel 22
是的,你正在以错误的方式思考它.
假设您不使用Alembic或任何其他迁移框架.在这种情况下,您可以使用以下步骤为应用程序创建新数据库:
db.create_all(),查看模型并在数据库中创建相应的表.所以现在考虑升级的情况.例如,假设您发布了应用程序的1.0版本,现在开始使用2.0版,这需要对数据库进行一些更改.你怎么能实现这一目标?这里的限制是db.create_all()不修改表,它只能从头创建它们.所以它是这样的:
现在,您有两种方法可以将这些更改传输到数据库:
5.1销毁数据库,以便您可以db.create_all()再次运行以获取更新的表,可能会备份和还原数据,以便您不会丢失它.不幸的是,SQLAlchemy对数据没有帮助,你必须使用数据库工具.
5.2手动将更改直接应用于数据库.这很容易出错,如果更改集很大,则会很繁琐.
现在考虑你有开发和生产数据库,这意味着工作需要完成两次.还要考虑当您有多个版本的应用程序时,它们会有多么繁琐,每个版本都有不同的数据库架构,您需要调查其中一个旧版本中的错误,您需要重新创建数据库中的错误.发布.
查看没有迁移网络时的问题?
使用Alembic,您在开始时会有一些额外的工作,但它会得到回报,因为它简化了升级的工作流程.创建阶段如下:
upgrade运行迁移脚本的命令,有效地在数据库中创建表.然后,当您到达升级点时,执行以下操作:
upgrade命令.这会将更改应用于数据库,而无需销毁任何表或备份数据.您可以在所有数据库(生产,开发等)上运行此升级.使用Alembic时需要考虑的重要事项:
upgrade和downgrade功能.这意味着它们不仅可以简化升级,还可以降级.如果您需要将数据库同步到旧版本,则该downgrade命令会为您执行此操作而无需您执行任何其他工作!| 归档时间: |
|
| 查看次数: |
4385 次 |
| 最近记录: |