Skip to main content
Agno 模板预配置了 SqlAlchemyalembic 来管理数据库。添加表的通用工作流程是:
  1. 将表定义添加到 db/tables 目录。
  2. db/tables/__init__.py 文件中导入表类。
  3. 创建数据库迁移。
  4. 运行数据库迁移。

表定义

我们来创建一个 UsersTable,将以下代码复制到 db/tables/user.py
db/tables/user.py
更新 db/tables/__init__.py 文件:
db/tables/__init__.py

创建数据库修订

在开发容器中运行 alembic 命令来创建数据库迁移:

迁移开发数据库

运行 alembic 命令来迁移开发数据库:

可选:添加测试用户

现在我们来添加一个测试用户。将以下代码复制到 db/tables/test_add_user.py
db/tables/test_add_user.py
运行脚本以添加测试用户:

迁移生产数据库

我们建议通过设置环境变量 MIGRATE_DB = True 并重新启动生产服务来迁移生产数据库。这将从入口点脚本在容器启动时运行 alembic -c db/alembic.ini upgrade head

更新 workspace/prd_resources.py 文件

workspace/prd_resources.py

更新 ECS 任务定义

由于我们更新了环境变量,我们需要更新任务定义:

更新 ECS 服务

更新任务定义后,重新部署生产应用程序:

手动迁移生产数据库

另一种方法是 SSH 进入生产容器以手动运行迁移。您的 ECS 任务已启用 SSH 访问。运行 alembic 命令来迁移生产数据库:

migrations 目录是如何创建的

这些命令已经运行过,并在此描述以供完整性参考
migrations 目录是使用以下命令创建的:
  • 运行上述命令后,应会创建 db/migrations 目录。
  • 更新 alembic.ini
    • script_location = db/migrations 设置为
    • 取消注释 [post_write_hooks] 中的 black hook
  • 按照 此链接 更新 db/migrations/env.py 文件
  • 将以下函数添加到 configure 中,以仅包含 target_metadata 中的表
db/migrations/env.py