您的位置:首页 > 数据库

Alembic对数据库版本管理的使用方法

2016-11-04 11:46 1006 查看
      对于SQLALCHEMY ORM 定义的数据库,数据库的设计不一定能一步到位,在项目运行中ORM的定义model版本更改后,需要使用SQL修改数据库,当数据库结构复杂且存储数据较多时,更改起来就比较麻烦,alembic就是为了解决这个问题而产生的。通过alembic可以放心修改model中表的结构内容,数据库的具体修改交给alembic。

      下面介绍在python flask中alembic的使用(在virtual env下):

1 安装

安装十分简单,因为是Python官方源里的包:

pip install alembic



2 初始化alembic环境

alembic init alembic



*随后项目目录应该会新增一个alembic.ini文件以及一个alembic(代码中后一个参数,可自定义)目录。



  alembic.ini 提供了一些基本的配置
  env.py 每次执行Alembic都会加载这个模块,主要提供项目Sqlalchemy Model 的连接
  script.py.mako 迁移脚本生成模版
  versions 存放生成的迁移脚本目录
*需要编辑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.




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐