alembic使用
1
| flask官方对sqlachemy提供了一个类似django的迁移工具,这个迁移工具的名字就是alembic
|
安装
初始化项目
修改对应文件
1 2 3 4 5 6 7 8 9 10
| 根路径下alembic.ini 找到下面那行并修改为你对应数据库的url url:sqlalchemy.url = mysql+pymysql://root:admin@localhost/alembic_demo
项目下env.py 找到下面这行,修改为你models.py中的 sqlachemy.metadata target_metadata = None eg: from animation.db.models import db target_metadata = db.metadata
|
进行数据迁移
1 2 3 4
| alembic revision -m "first commit"
alembic upgrade head
|
版本回滚
1 2 3 4
| alembic downgrade 版本号
alembic history
|
数据库对应操作
建表
1 2 3 4 5 6 7
| op.create_table( "table_name", # 表名 sa.Column('column_name1', sa.Integer, primary_key=True, autoincrement=True, nullable=False), sa.Column('column_name2', sa.Integer, nullable=False), sa.Column('column_name3', sa.DATETIME, nullable=False), sa.Column('column_name4', sa.Float, nullable=False) )
|
数据类型:sa.DATETIME, sa.Integer, sa.Float, sa.String(45), sa.String(255)等
删表
1
| op.drop_table('table_name')
|
修改某一列的属性
1 2 3 4 5 6 7
| op.alter_column( table_name='table_name', column_name='old_column_name', new_column_name='new_column_name', type_=sa.String(255), existing_type=sa.DATETIME, nullable=False )
|
加一列
1 2 3 4
| op.add_column( 'table_name', sa.Column('new_column_name', sa.String(45), nullable=True) )
|
删除一列
1
| op.drop_column('table_name', 'column_name')
|