我的索引具有以下模型:
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 db中创建的索引:
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())
)
感谢IljaEverilä!
答案 0 :(得分:4)
完整的解决方案:
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())
)