gpt4 book ai didi

python - 使用 SqlAlchemy 和 Alembic 创建部分索引

转载 作者:行者123 更新时间:2023-11-28 21:46:37 25 4
gpt4 key购买 nike

我有以下带有索引的模型:

class User(TableMixin, Base):
username = Column(String, nullable=False, unique=False)
password = Column(String, nullable=False, unique=False)

Index('ix_active_username', "active", username,
unique=True,
postgresql_where=("active" is True)
)

使用 TabbleMixin 类

class TableMixin():
id = Column(Integer, primary_key=True)
active = Column(Boolean, nullable=False, default=True)

我希望在我的 postgres 数据库中创建的索引:

CREATE UNIQUE INDEX unique_active_username on user (username, active) 
where active = True;

Active 位于引号之间,因为它无法识别,因为它在 User 类中无法识别。

在我运行“alembic revision --autogenerate”之后,alembic 文件是空的。有谁知道我做错了什么?

编辑:我所要做的就是将索引放在类的范围之外。并更改位置

postgresql_where=(User.active == true())

所有代码:

class User(TableMixin, Base):
username = Column(String, nullable=False, unique=False)
password = Column(String, nullable=False, unique=False)

class TableMixin():
id = Column(Integer, primary_key=True)
active = Column(Boolean, nullable=False, default=True)

Index('ix_active_username', User.active, User.username,
unique=True,
postgresql_where=(User.active == true())
)

感谢 Ilja Everilä!

最佳答案

完整的解决方案:

class User(TableMixin, Base):
username = Column(String, nullable=False, unique=False)
password = Column(String, nullable=False, unique=False)

class TableMixin():
id = Column(Integer, primary_key=True)
active = Column(Boolean, nullable=False, default=True)

Index('ix_active_username', User.active, User.username,
unique=True,
postgresql_where=(User.active == true())
)

关于python - 使用 SqlAlchemy 和 Alembic 创建部分索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37698555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com