小编Luk*_*zee的帖子

Alembic 是否可以应用于现有数据库,并在检测到表/列已存在时跳过创建/更改表/列?

我已经使用 Alembic 创建了一些迁移,它是一个非常有趣的工具。

在新数据库上使用它非常简单,但是我们的用例是将这些迁移应用到现有数据库,不仅是为了让它们“跟上速度”,而且是为了确保例如表或列是否应该通过phpmyadmin 前端或者如果表已经存在,它可以更正/创建。

这将是完美的,因为为该脚本创建的 MigrationID 将能够应用于我们拥有的任何数据库,通过跳过它认为正确的内容来纠正任何不一致,而不会创建重复项。

如前所述,使用 Alembic 构建的新数据库可以通过降级和重新应用来修复,但我想知道是否可以对应用了 Alembic 的现有数据库进行此操作。

作为参考,这是第一个迁移代码示例(如果它在某种程度上有用的话)。

"""create account table

Revision ID: bd4ec9e8afe8
Revises: 
Create Date: 2019-10-29 15:25:39.736234

"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects.mysql import TINYINT


# revision identifiers, used by Alembic.
revision = 'bd4ec9e8afe8'
down_revision = None
branch_labels = None
depends_on = None


def upgrade():

    op.create_table(
        'account',
        sa.Column('id', sa.Integer, primary_key=True, nullable=False),
        sa.Column('title', sa.String(150), nullable=False),
        sa.Column('description', sa.Text, nullable=False),
        sa.Column('uploads_allowed', TINYINT(), nullable=True),
        sa.Column('viewers_contact_details', TINYINT(), default=0),
    )

    op.alter_column('account', sa.Column('id', sa.Integer, …
Run Code Online (Sandbox Code Playgroud)

python mysql sqlalchemy alembic

8
推荐指数
1
解决办法
5103
查看次数

标签 统计

alembic ×1

mysql ×1

python ×1

sqlalchemy ×1