博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

(数据迁移)alembic 使用总结

Posted on 2018-08-24 21:02  马顿  阅读(741)  评论(0编辑  收藏  举报

基本操作:

pip install alembic

cd到工程根目录:alembic init path_name

修改alembic.ini中的数据库url

在env.py中添加工程路径至python库搜索路径

在env.py中导入所有的model

在env.py设置target_metadata

import sys, os
basepath = os.path.abspath(__file__)
sys.path.append(r"basepath\..\..\..\\")

from mindform.server.author import model
target_metadata = model.Base.metadata

 

常用命令:

alembic是数据库的升级管理工具,它可以自动生成升级回退脚本,也可以只生成模板升级回退脚本,然后由开发者自行编写。

自动生成升级回退脚本:alembic revision --autogenerate -m "xxxxxxxx"

只生成模板升级回退脚本:alembic revision  -m "xxxxxxxx"

 

上述操作会生成一个数据库版本号,利用alembic可以方便的将数据库升级/回退至对应的版本

alembic upgrade head

alembic downgrade base

问题:

问题1、需要在env.py中导入所有关注的模型,自动生成脚本时只会关注导入的模型

问题2、执行alembic revision --autogenerate -m "xxxxxxxx"时报如下错误,原因是之前已经生成了一个版本,但是并没有执行alembic upgrade head

Target database is not up to date.

FAILED: Target database is not up to date.