-
创建一个新的数据库迁移脚本
alembic revision –-autogenerate -m "initdb2" --head head
(这段代码一定要手动输入) -
下面的命令可以看到,migration/versions目录下,多出来一个55开头的py文件,555a49f2bef0就是版本号(77开头的是我创建的第一个版本)。
(venv) dorlolo@site: ls migration/versions/ 555a49f2bef0_initdb2.py 771061e04df8_initdb.py __pycache__
-
使用命令查看文件内容
vim migration/versions/555a49f2bef0_initdb2.py
"""initdb2 #当前版本名称 Revision ID: 555a49f2bef0 #当前版本 Revises: 771061e04df8 #上一个版本 Create Date: 2021-06-02 09:33:41.287367 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. 意为如果回退的话回到哪个版本 revision = '555a49f2bef0' #当前版本 down_revision = '771061e04df8' #上一个版本 branch_labels = None depends_on = None #执行alembic upgrade 命令调用的方法 def upgrade(): # ### commands auto generated by Alembic - please adjust! ### pass # ### end Alembic commands ### #降级数据库方法,内容自行填写 def downgrade(): # ### commands auto generated by Alembic - please adjust! ### pass # ### end Alembic commands ###
-
修改案例:
from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = '555a49f2bef0' #当前版本 down_revision = '771061e04df8' #上一个版本 branch_labels = None depends_on = None #执行alembic upgrade 命令调用的方法 def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.create_table('users', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=100), nullable=True, comment='姓名'), sa.Column('sex', sa.String(length=100), nullable=True, comment='性别'), sa.Column('age', sa.Text(), nullable=True, comment='备注年龄), sa.Column('idcard', sa.String(length=100), nullable=True, comment='证件号码'), sa.Column('update_time', sa.DateTime(), nullable=True, comment='更新时间'), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('name'), sa.UniqueConstraint('idcard'), ) # ### end Alembic commands ### #降级数据库方法,内容自行填写 def downgrade(): # ### commands auto generated by Alembic - please adjust! ### op.drop_table('daq_channel') # ### end Alembic commands ###
此时alembic更新数据库的命令用法就一目了然了
- 更新数据库 `alembic upgrade 版本号`
- 更新到最新版 `alembic upgrade head`
- 降级数据库 `alembic downgrade 版本号`
- 更新到最初版 `alembic downgrade head`
实际使用遇到的问题
我将项目代码上传至服务器后,使用alembic upgrade 771061e04df8
命令提示执行成功,单没有创建upgrade方法中的数据表。
经过多次尝试,按照如下步骤即可解决:
使用alembic revision –-autogenerate -m "initdb2" --head head
命令新建一个版本,
然后将upgreade方法复制过去。
接着执行alembic upgrade head
,最后终于成功创建新表了。