1. alembic [--config */alembic.ini ] current
2. alembic revision -m "add columns"
编辑生产的模板文件,更新upgrade/downgrade
如何编辑见后文。
3. alembic upgrade head[or version]
4. alembic downgrade -1
5. 编写模板文件 修改upgrade downgrade
revision = '...'down_revision = '...'from alembic import opimport sqlalchemy as sadef upgrade(): passdef downgrade(): pass
1)新建table
op.create_table( 'account', sa.Column('id', sa.Integer(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=True), sa.Column('updated_at', sa.DateTime(), nullable=True), sa.Column('nickname', sa.String(length=48), nullable=False), sa.Column('identityID', sa.String(length=255), nullable=False), sa.PrimaryKeyConstraint('id'), mysql_ENGINE='InnoDB', mysql_DEFAULT_CHARSET='UTF8' ) op.create_unique_constraint( "uniq_account0identityID", "account", [identityID]) or
op.create_table( 'account', ...... sa.UniqueConstraint('identityID', name='uniq_account0identityID') ...... )
2)新增column
op.add_column('account', sa.Column('age', sa.Integer(), nullable=False)) or op.alter_column('account', 'age', new_column_name='sex', existing_type=sa.Integer())
3)重命名table
op.rename_table('account', 'tb_account')
4)删除table
op.drop_table('account')
5)创建外键
op.create_foreign_key( "fk_user_address", "address", "user", ["user_id"], ["id"])
6)执行sql
marital_status_column = sa.Column('maritalStatus', sa.Boolean(), default=False) op.add_column('account', marital_status_column) account = sa.sql.table('baymodel', marital_status_column) op.execute( account.update().values({ 'maritalStatus': True}) )
7)sqlalchemy主要types
sa.Integer()sa.String(length=255)sa.DateTime()sa.Text() sa.Boolean()