python - 模型更改后如何进行bulk_inserts
问题描述
每当我们开始一组新的测试时,我们都会在我们的 pytest 框架中使用 alembic 来生成一个新的测试数据库。这在一段时间内运行良好,直到我们更改了表中的一列并破坏了我们的测试。
如果我们从头开始创建一个新环境,同样的问题也会发生。
该过程如下所示:
- 开发人员创建了一个新的 SQLAlchemy 模型。
- Alembic 在数据库中创建表。
- Alembic 使用
op.bulk_insert
将一些数据加载到该新表中。 - 开发人员更新了 SQLAlchemy 模型。
- Alembic 应用表更改。
- Alembic 使用
op.bulk_insert
.
问题是如果我现在返回并从步骤 (2) 开始,因为我正在构建新环境或运行测试,当 bulk_insert 在步骤 (3) 中运行时,它在我们的源代码中使用新的sqlalchemy 模型,这会导致它失败了。
我想一个丑陋的解决方案是在当前分支中保留模型的每个变体的副本,然后让相关bulk_insert
迁移在运行时使用适当的模型变体。(可能通过返回并修改所有旧迁移以从存档文件夹导入。)
有没有更优雅的方式来使用 (2) 和 (3) 中找到的原始表布局和原始数据集进行 bulk_insert,而不在我们的源代码中保留一堆旧模型版本?
解决方案
推荐阅读
- python - 如何在不使用上下文管理器的情况下避免在 Locust 中记录请求?
- streampipes - 在 Apache Streampipes 中安装缺少的元素
- codenameone - 从存储加载图像
- r - 用 ggplot2 创造传奇
- python - 切换到面板 - Python Selenium
- python-3.x - 使用与 Postman URL 匹配的参数发出 python 烧瓶 API 请求
- json - 如何在 jq 中引用对象上的动态键?
- c# - 不同发布环境的 TeamCity .NET 5 C# 配置(json 和 .config 文件)
- python - 通过 html 表单将图像发送到 odoo 12 控制器
- c# - 如果想连接 mysql,Visual Studio 2019 中的 con.open() 错误