【发布时间】:2022-01-22 17:04:05
【问题描述】:
我的模型如下,我希望在具有 md5 哈希的特定列上具有唯一索引,但 func.md5(col2) 不起作用。
class TestClass(db.Model):
__tablename__ = 'my_table'
id = db.Column(db.BigInteger, primary_key=True, autoincrement=True)
col1 = db.Column(db.String)
col2 = db.Column(db.String)
col3 = db.Column(db.Numeric)
__table_args__ = (
UniqueConstraint('col1', func.md5(col2), name='my_table_unique_idx')
)
【问题讨论】:
-
注意 MD5 已损坏,已知碰撞攻击:crypto.stackexchange.com/questions/1434/…,最好使用 SHA 哈希。
-
您将
UniqueConstraint实例作为__table_args__传递,带有额外的括号,而不是实例的一元组。换句话说,您缺少逗号。有趣的是,在这种情况下,约束充当空的可迭代对象:stackoverflow.com/a/43977950/2681632
标签: python postgresql sqlalchemy flask-sqlalchemy