gpt4 book ai didi

python - 具有函数的复合 UniqueConstraint

转载 作者:行者123 更新时间:2023-11-28 16:54:53 24 4
gpt4 key购买 nike

一个快速的 SQLAlchemy 问题...

我有一个类“Document”,其属性为“Number”和“Date”。我需要确保同一年没有重复的数字,是有没有办法在“数字 + 年(日期)”上设置 UniqueConstraint?我应该改用唯一索引吗?我将如何声明功能部分?

(SQLAlchemy 0.5.5,PostgreSQL 8.3.4)

提前致谢!

最佳答案

您应该使用功能唯一索引来应用此约束。不幸的是,SQLAlchemy 中的数据库通用数据库独立模式定义机制尚未抽象出功能索引。您必须使用 DDL 构造来注册自定义模式定义子句。如果您使用声明性方法来声明您的架构,请在您的类定义之后添加以下内容:

DDL(
"CREATE UNIQUE INDEX doc_year_num_uniq ON %(fullname)s "
"(EXTRACT(YEAR FROM date), number)"
).execute_at('after-create', Document.__table__)

此方法非常有效,但在 v0.7 中会抛出 SADeprecation 警告我成功使用的语法:

from sqlalchemy import event

event.listen(ModelObject.__table__,
'after_create',
DDL("CREATE UNIQUE INDEX term_year ON %(fullname)s "
"(EXTRACT(YEAR FROM start_date), term)",
on = 'postgresql'
)
)

关于python - 具有函数的复合 UniqueConstraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1510018/

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