文章内容

2023/6/24 19:02:22,作 者: 黄兵

SQLAlchemy 多字段唯一索引

在 SQLAlchemy 如果有多个字段组成唯一索引,下面是一个示例:

from sqlalchemy import UniqueConstraint
class APIToken(db.Model):
__tablename__ = 'api_tokens'
id = db.Column(db.Integer, primary_key=True)
token = db.Column(db.String(32), unique=True, index=True)
user_id = db.Column(db.Integer, db.ForeignKey('ip_crawler_users.id'))
create_time = db.Column(db.DateTime(timezone=True), server_default=func.now(), index=True)
time_updated = db.Column(db.DateTime(timezone=True), onupdate=func.now())

我们需要将 user_idtoken 组成唯一索引,也就是在一张表里面:user_idtoken 不能重复出现,我们修改代码如下:

from sqlalchemy import UniqueConstraint
class APIToken(db.Model):
__tablename__ = 'api_tokens'
id = db.Column(db.Integer, primary_key=True)
token = db.Column(db.String(32), unique=True, index=True)
user_id = db.Column(db.Integer, db.ForeignKey('ip_crawler_users.id'))
create_time = db.Column(db.DateTime(timezone=True), server_default=func.now(), index=True)
time_updated = db.Column(db.DateTime(timezone=True), onupdate=func.now())
__table_args__ = (UniqueConstraint('token', 'user_id', name='_token_user_id_uc'),)

在上面的代码中,我们在__table_args__中定义了一个UniqueConstraint约束,它将tokenuser_id两个字段组合在一起形成一个唯一索引。name='_token_user_id_uc'用于指定索引的名称,你可以根据需要修改它。

请确保导入了UniqueConstraint类,例如可以这样导入:

from sqlalchemy import UniqueConstraint

完成这些修改后,当你创建数据库表时,tokenuser_id字段将会形成一个唯一索引。


参考资料:

1、ChatGPT


其它相关推荐:

1、SQLAlchemy Unique Constraints

2、MySQL主备模式设置

3、Python endswith() 函数

4、python __repr__ 作用

5、一朵云的重量将近 50 万公斤,那为什么它不掉下来?


黄兵个人博客

转载请注明出处:黄兵个人博客 - SQLAlchemy 多字段唯一索引

分享到:

发表评论

评论列表