参考 https://sqlalchemy-migrate.readthedocs.org/en/latest/versioning.html#writing-for-a-specific-database
0.作用
可对数据库进行版本升级/降级
新版本的代码,数据库表结构发生变化。采用migrate可直接改变数据库的表结构而不影响原有的数据。
一。 SQLALchemy 迁移提供两种方式
1)api方式 migrate.versioning API
2)migrate 命令行方式
二。涉及概念
repository : 数据库迁移所需要的配置文件、脚本等保存的目录
三。迁移的工作流程
命令行方式
1.建立repository
migrate create /home/cloud/your_repository "example project"
在创建新的repository(/home/cloud/your_repository),名为'example project'
目录下的内容
cloud@ubuntu22:~/your_repository$ ls -l
total 20
-rw-r--r-- 1 cloud cloud 0 五月 29 15:18 __init__.py
-rw-r--r-- 1 cloud cloud 185 五月 29 15:18 __init__.pyc
-rw-rw-r-- 1 cloud cloud 116 九月 10 17:02 manage.py
-rw-r--r-- 1 cloud cloud 1242 九月 10 17:02 migrate.cfg
-rw-r--r-- 1 cloud cloud 107 五月 29 15:18 README
drwxr-sr-x 2 cloud cloud 4096 五月 29 15:18 versions
versions: 保存迁移所需要的各个版本脚本的目录
manage.py : 执行这个脚本跟执行migrate命令一样的效果,但是manage.py可以预设一些参数值(现在还没有设置,后面会说明)
migrate.cfg: 配置文件
repository_id : 上面命令行定义的name
version_table: 数据库记录migrate版本的表名
2.建立版本控制(即说明要迁移的数据库名,并且将所需信息写入数据库)
python /home/cloud/your_repository/manage.py version_control sqlite:///test.db /home/cloud/your_repository/
将数据库与repository建立关联关系,会在test.db创建新表migrate_version,版本为0