Alembic:更新以前的修订版会有好处吗

  • 本文关键字:修订版 更新 Alembic alembic
  • 更新时间 :
  • 英文 :


我是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是对关系数据库的变更管理脚本的调用对于新的更改,创建新的修订并在那里添加更改因此,在这种情况下,它将更改现有表的列的数据类型。

最新更新