小编mmw*_*way的帖子

如果没有检测到任何更改,如何防止 alembic revision --autogenerate 创建修订文件?

我有一个项目,我正在使用 SQLAlchemy 进行模型,并且我正在尝试集成 Alembic 来进行迁移。当我更改模型时,一切都按预期工作,并且 Alembic 看到模型已更改 -> 它使用命令创建良好的迁移文件: alembic revision --autogenerate -m "model changed"

但是当我没有更改模型中的任何内容并且我使用相同的命令时:

alembic revision --autogenerate -m "should be no migration"

revision 给了我“空”修订文件,如下所示:

"""next

Revision ID: d06d2a8fed5d
Revises: 4461d5328f57
Create Date: 2021-12-02 18:09:42.208607

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'd06d2a8fed5d'
down_revision = '4461d5328f57'
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    pass
    # ### end …
Run Code Online (Sandbox Code Playgroud)

python migration revision alembic

6
推荐指数
1
解决办法
3485
查看次数

SQLAlchemy 使用naming_convention创建多列索引

我正在尝试为基于模型的表创建多个(即2列索引)。但我不想给出这个索引的具体名称。我想要这样naming_convention,并且alembic revision --autogenerate会通过命名索引来完成它的工作。到目前为止我有这样的代码:

from sqlalchemy import MetaData
from sqlalchemy.ext.declarative import as_declarative
from sqlalchemy.schema import Index

metadata = MetaData(
        naming_convention={
            'pk': '%(table_name)s_pk',
            'ix': '%(table_name)s_%(column_0_N_name)s_ix',
        },
    )

@as_declarative(metadata=metadata)
class Base:
    pass

class Foo(Base):
    id = Column(Integer, primary_key=True)
    col1 = Column('Col1', Integer)
    col2 = Column('Col2', DateTime)

Index(
    metadata.naming_convention['ix'] % {
        'table_name': Foo.__tablename__,
        'column_0_N_name': Foo.col1.expression.name + "_" + Foo.col2.expression.name
    },
    Foo.col1,
    Foo.col2,
)
Run Code Online (Sandbox Code Playgroud)

所以我想避免代码的“创建名称”部分:

    metadata.naming_convention['ix'] % {
        'table_name': Foo.__tablename__,
        'column_0_N_name': Foo.col1.expression.name + "_" + Foo.col2.expression.name
    }
Run Code Online (Sandbox Code Playgroud)

indexing sqlalchemy alembic

0
推荐指数
1
解决办法
2238
查看次数

标签 统计

alembic ×2

indexing ×1

migration ×1

python ×1

revision ×1

sqlalchemy ×1