gpt4 book ai didi

sqlalchemy - Alembic、SQLAlchemy 和项目内的多个 "apps"

转载 作者:行者123 更新时间:2023-12-04 17:30:15 37 4
gpt4 key购买 nike

从 Django 的世界来到 SQLAlchemy,我希望将一个项目分成几个应用程序,其中模型和 View 根据它们的用途聚集在一起。

例如,我正在编写一个规划器应用程序,我想让 UsersPlans 生活在我项目中的单独应用程序中。我想确保如果我必须将这个项目拆分成更小的项目,我将尽可能减少工作量。

我还希望能够相应地使用一个命令生成和运行迁移,这样我就不必在每次添加模型或“应用程序”时都重新配置我的 CI 构建。

到目前为止我在这方面能想到的是

项目结构:

my_planner
+- users
| +- migrations
| | +- versions
| | | +- 0000_initial.py
| | +- __init__.py
| | +- env.py
| | +- script.py.mako
| +- __init__.py
| +- models.py
+- plans (same structure as users)

alembic.ini:

[alembic]
script_location = alembic/migrations # this doesn't seem to matter
version_locations = users/migrations/versions plans/migrations/options

[users]
script_location = users/migrations

[plans]
script_location = plans/migrations

然后我必须将 env.py 文件放入我的 migrations 文件夹中,并将我想要包含在自动迁移中的模型导入。

但是,当我生成自动迁移时,我必须指定生成它们的确切“应用程序”并指定一个分支。

PYTHONPATH=. alembic --name users revision -m 'initial'  --rev-id='0000' --branch-label users --autogenerate

当我应用迁移时,我必须为每个分支分别应用它们。

有没有一种方法可以在一个命令中相应地完成这些事情,而无需编写我自己的自定义脚本?还是有另一种管理迁移的方法?

最佳答案

不幸的是,我还没有找到一种开箱即用的方法来做到这一点。我写了关于我们采用的方法 here .

它的要点是;

  • 创建通用迁移功能
  • 向每个应用(模式、元数据)添加一个包含应用特定信息的迁移目录
  • 将您的相关应用程序部分添加到 alembic.ini 文件中,引用每个目录
  • 使用从基础开始的分支分别跟踪每个应用的迁移

关于sqlalchemy - Alembic、SQLAlchemy 和项目内的多个 "apps",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60435157/

37 4 0
文章推荐: r - 预测 cv.glmnet 为每一行 r 提供相同的值
文章推荐: object - 为什么 HTML anchor 标记不包装可缩放的 SVG