创建一个新的数据库迁移脚本
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 upgrade 版本号`
- 更新到最新版 `alembic upgrade head`
- 降级数据库 `alembic downgrade 版本号`
- 更新到最初版 `alembic downgrade head`
我将项目代码上传至服务器后,使用alembic upgrade 771061e04df8
命令提示执行成功,单没有创建upgrade方法中的数据表。
经过多次尝试,按照如下步骤即可解决:
使用alembic revision –-autogenerate -m "initdb2" --head head
命令新建一个版本,
然后将upgreade方法复制过去。
接着执行alembic upgrade head
,最后终于成功创建新表了。