我是Alembic的新手,如果我遗漏了什么,我很抱歉,但我很难理解前任的一些方法。
我的前任(在我的公司(在版本/目录中有一系列修订文件。如果需要更改数据库模式,他会更改现有的修订文件,并将其签入源代码管理。例如,要调整列的大小,现有的create_table((函数将被更改,如下所示:
op.create_table(
'mytable',
id(),
sa.Column('name', sa.VARCHAR(50)),
到此:
op.create_table(
'mytable',
id(),
sa.Column('name', sa.VARCHAR(100)),
有没有什么方法可以成为一种有用或有益的方式来使用Alembic,而我不知道,因为我是新手?这不是完全违背了使用Alembic的目的吗?
每当我们创建新的修订文件时,下面将是通用模式,即它将具有升级和降级功能。
"""create mytable table
Revision ID: 3975ea83b745
Revises:
Create Date: 2021-05-21 23:48:27.038406
"""
# revision identifiers, used by Alembic.
revision = '3975ea83b745'
down_revision = None
branch_labels = None
from alembic import op
import sqlalchemy as sa
def upgrade():
# create table mytable
pass
def downgrade():
# drop table mytable if exists
pass
更改现有脚本不是一种好的做法,因为您需要降级到相应的修订Id(在这里您将丢失数据(,然后用新的更改再次升级,很明显,您不想降级生产中的完整版本。例如在这种情况下;神话般的";将首先降级,然后使用新的更改进行升级。
因为alembic是对关系数据库的变更管理脚本的调用对于新的更改,创建新的修订并在那里添加更改因此,在这种情况下,它将更改现有表的列的数据类型。