如何在SQLAlchemy中添加UniqueConstraint
问题内容:
如何使用SQLalchemy添加不区分大小写的UniqueConstraint?
问题答案:
在某些数据库中,字符串列默认情况下不区分大小写(MySQL,SQL Server),因此您无需执行任何其他操作。
在其他情况下,您可以创建一个功能索引来强制不区分大小写的唯一约束:
Index('myIndex', func.lower(mytable.c.myColumn), unique=True)
如果数据库支持,您还可以为该列指定不区分大小写的排序规则。例如,SQLite具有“ NOCASE”排序规则:
myColumn = Column(String(255), collation='NOCASE', nullable=False)
参见http://docs.sqlalchemy.org/en/latest/core/type_basics.html?highlight=collation#sqlalchemy.types.String.params.collation
如果数据库提供了合适的类型,则也可以为列指定用户定义的类型。PostgreSQL具有不区分大小写的citext数据类型。参见https://github.com/mahmoudimus/sqlalchemy-
citext
最后,您可以自定义DDL以为您的特定数据库创建约束。