我已经使用 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)