You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SQLModel为多列定义UniqueConstraint约束?

在SQLModel中实现多列组合唯一约束

SQLModel完全兼容SQLAlchemy的UniqueConstraint用法,要实现指定user_id下name的唯一性,最惯用的方式是通过模型的__table_args__属性声明表级组合唯一约束。

修改后的完整代码示例:

from sqlmodel import SQLModel, Field, UniqueConstraint


class SubAccount(SQLModel, table=True):
    id: int = Field(primary_key=True)
    name: str
    description: str
    user_id: int = Field(foreign_key="user.id")

    __table_args__ = (
        UniqueConstraint("user_id", "name", name="subaccount_user_id_name_unique"),
    )

关键说明:

  • __table_args__是SQLModel继承自SQLAlchemy的表级配置属性,专门用来定义表层面的约束、索引等
  • UniqueConstraint的参数里依次传入需要组合的列名(user_id和name),数据库会强制保证这两列的组合值唯一
  • 最后的name参数是给约束自定义名称,可选但推荐添加,方便后续排查约束冲突或维护数据库结构
  • 模型必须加上table=True参数,否则SQLModel不会将其映射为数据库表,约束也不会生效

这样配置后,当尝试插入同一user_id下重复name的记录时,数据库会直接抛出唯一性约束冲突的异常,从底层保证数据的一致性。

内容的提问来源于stack exchange,提问作者Jundiaius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:05:18