博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
alembic生成数据库升级脚本
阅读量:6464 次
发布时间:2019-06-23

本文共 1294 字,大约阅读时间需要 4 分钟。

alembic可以处理sqlalchemy定义的数据库的升级.

1. 生成可配置的升级脚本 alembic init update

.├── alembic.ini└── update    ├── env.py    ├── env.pyc    ├── README    ├── script.py.mako    └── versions

2. 编辑alembic.ini文件来建立alembic与数据库实体之间的关联

sqlalchemy.url = driver://user:pass@localhost/dbname

改成和自己的数据库engine相对应

3. 编辑env.py来与sqlalchemy建立关联

sqlalchemy定义了数据库与类之间的映射, 为了关联alembic与sqlalchemy, 需要修改target_metadata = None

在定义数据库表时, 我们需要继承Base = declarative_base(), 这时可以改成target_metadata = Base.metadata即可. 如果是用的elixir库, 可以改成target_metadata = elixir.metadata

4. alembic处理升级

alembic在处理数据库升级时, 需要知道当前的数据库更新到了哪个升级脚本, 在数据库中会有alembic_version记录这一项, 如果没有的话, 需要运行alembic history来查看当前的脚本之间的前后继关系

c13aac80dc0d -> a6bd6b66dc68 (head), v1.0.68af8ba526412 -> c13aac80dc0d, 12_27c07041b991dd -> 8af8ba526412, v1.0.4d9e1223a5cc6 -> c07041b991dd, 002_update_for_12.2 -> d9e1223a5cc6, v1.0.2

如果我确定我当前的数据库是由c13aac80dc0d对应的脚本升级上来的, 那么执行alembic stamp c13aac80dc0d来更新数据库, 表明当前数据库对应到了这个脚本, 此时可以执行alembic current来查看确实是这个

版本.

之后, 可以基于当前的数据库与我们已经定义好的表之间自动生成升级脚本alembic revision --autogenerate -m "create update files", 可能还需要改一些语句, 或者数据库表之间的关系的调整还涉及到数据>记录的内容更改与填充.

5. 升降级命令

alembic upgrade +1alembic downgrade -1

6. 建议

不要自己去写python或者Sql脚本创建数据库实体, 建议从一开始就用alembic操作数据库. 就是说在项目里面跟数据库相关的操作, 只需要定义好了orm, 之后代码里面做增删查改就够了. 其它的创建数据库, 创建表

, 更改表结构的操作都由alembic来接管.

转载地址:http://tdezo.baihongyu.com/

你可能感兴趣的文章
如何用正则删除不包含某个字符串的行
查看>>
NGINX防止恶意解析!
查看>>
综合练习:宋词排列
查看>>
Mysql删除数据报外键约束解决方法
查看>>
用GDB调试程序(三)
查看>>
DBV工具
查看>>
在数据仓库中存储数据失败
查看>>
lzg_ad:两个应用程序兼容组件宏说明
查看>>
SMS之SMS如何发现SMS客户机以及在客户端上装的软件
查看>>
Linux 系统下双机HA的实现所用的六个软件包
查看>>
Dimming the background.
查看>>
android之JNI开发步骤总结
查看>>
Redis安装
查看>>
基于pxe和kickstart批量安装centos6.5
查看>>
perl 求和
查看>>
zabbix(一)zabbix环境的搭建
查看>>
zabbix 安装 weathermap
查看>>
清除SVN版本控制文件
查看>>
Android 中文 API (29) —— CompoundButton
查看>>
CentOS6无法本地登陆,ssh远程登陆没问题
查看>>