对于SQLALCHEMY ORM 定义的数据库,数据库的设计不一定能一步到位,在项目运行中ORM的定义model版本更改后,需要使用SQL修改数据库,当数据库结构复杂且存储数据较多时,更改起来就比较麻烦,alembic就是为了解决这个问题而产生的。通过alembic可以放心修改model中表的结构内容,数据库的具体修改交给alembic。
下面介绍在python flask中alembic的使用(在virtual env下):
1 安装
安装十分简单,因为是Python官方源里的包:
pip install alembic
alembic init alembic
*需要编辑alembic.ini文件去指定Alembic的数据库连接:
sqlalchemy.url = driver://user:pass@localhost/dbname
*这里不使用alembic.ini,备注掉上面数据库连接,采取配置env.py的方法:
import sys
from os.path import dirname, abspath
sys.path.append(dirname(dirname(abspath(__file__))))
from app import db, create_app
from app.models import *
app = create_app()
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
config.set_main_option('sqlalchemy.url',
app.config.get('SQLALCHEMY_DATABASE_URI'))
# Interpret the config file for Python logging.
# This line sets up loggers basically.
fileConfig(config.config_file_name)
# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
target_metadata = db.metadata
3 管理数据库
*创建数据库版本:
alembic revision --autogenerate -m 'what changed in model'
*升级数据库版本:
alembic upgrade head
*回滚数据库版本:
alembic downgrade 'version in /alembic/versions'
Over.