pip install pymysql
pip install sqlalchemy
pip install alembic
完成 pip 安装之后
在 shell 里面 cd 到项目根目录执行 alembic init alembic
用 pycharm 把生成的文件 download 回来(包括 alembic 目录和 alembic.ini)
修改 alembic.ini 设置数据库连接。
sqlalchemy.url = driver://user:pass@localhost/dbname
在 env.py 中设置,将target_metadata赋值成数据库的元数据(metadata) 如果执行 revision 有 import 报错,注意是否正确将当前项目目录添加到 sys.path 路径
将 model 定义好,并确认在 env.py 里导入的 Base 类是在 model 定义的地方的
配置完成执行( -m “注释信息”,根据情况更改,会用到生成的py文件名字里)
alembic revision --autogenerate -m “create_user_table”
这里可以看到虚拟机目录在 alembic/versions 里生成了 py 文件,检查确认更新的内容,然后执行
alembic upgrade head
这样就会更新 mysql 数据库了
查看记录和历史
alembic history
回退上一个升级的版本
alembic downgrade -1
查看生成的 py 文件
ls -l alembic/versions
其他操作
删除 rm alembic/versions/xxx.py原因:该版本曾经upgrade执行过了,但是文件被删除,
解决办法:更新数据库 alembic_version 表记录
ERROR [alembic.util.messaging] Can’t locate revision identified by ‘a2de455a4f51’ FAILED: Can’t locate revision identified by ‘a2de455a4f51’
原因:Base import 不正确,或者 model 定义不正确
解决办法:检查 model 代码
ERROR [alembic.util.messaging] Target database is not up to date. FAILED: Target database is not up to date.
这样才能确保生成的py文件反应所有数据库变更
需要注意
刘润森! 认证博客专家 Python Java 前端 17年就读于东莞XX学院化学工程与工艺专业,GitChat作者。Runsen的微信公众号是"Python之王",因为Python入了IT的坑,从此不能自拔。公众号内容涉及Python,Java计算机、杂谈。干货与情怀同在。喜欢的微信搜索:「Python之王」。个人微信号:RunsenLiu。不关注我公号一律拉黑!!!