如何在 alembic 迁移中使用现有的 postgres 枚举?
How to use existing postgres enum in alembic migration?
我有一个使用 alembic 的新迁移。我的数据库有一个枚举名称 myenum
.
这是迁移脚本:
def upgrade():
op.create_table(
"test_table",
# ...
sa.Column("enum_col", sa.Enum("A", "B", "C", name="myenum"), server_default="A", nullable=False)
# ...
)
但是当我迁移脚本时,它除了:
DuplicateObject: "myenum" already exists
我需要知道如何在迁移中使用现有枚举。
我已尝试 create_type=False
如答案 here 所示。但这也无济于事。
内置的 Enum
类型的 SQLAlchemy 不支持 create_type
。您可以使用支持 create_type=False
.
的 postgres 方言中的 ENUM
类型
from sqlalchemy.dialects import postgresql as pg
def upgrade():
op.create_table(
"test_table",
# ...
sa.Column("enum_col",
pg.ENUM("A", "B", "C",
name="myenum", create_type=False),
server_default="A", nullable=False)
# ...
)
有关 create_type
的更多信息,请参阅 docs。
我有一个使用 alembic 的新迁移。我的数据库有一个枚举名称 myenum
.
这是迁移脚本:
def upgrade():
op.create_table(
"test_table",
# ...
sa.Column("enum_col", sa.Enum("A", "B", "C", name="myenum"), server_default="A", nullable=False)
# ...
)
但是当我迁移脚本时,它除了:
DuplicateObject: "myenum" already exists
我需要知道如何在迁移中使用现有枚举。
我已尝试 create_type=False
如答案 here 所示。但这也无济于事。
内置的 Enum
类型的 SQLAlchemy 不支持 create_type
。您可以使用支持 create_type=False
.
ENUM
类型
from sqlalchemy.dialects import postgresql as pg
def upgrade():
op.create_table(
"test_table",
# ...
sa.Column("enum_col",
pg.ENUM("A", "B", "C",
name="myenum", create_type=False),
server_default="A", nullable=False)
# ...
)
有关 create_type
的更多信息,请参阅 docs。