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

如何在SQLAlchemy中为含外键的表创建复合主键?

实现Options表的复合主键(含外键)

在SQLAlchemy中,你可以通过两种常用方式为trackerId(外键)和name字段创建复合主键:

方式一:显式定义主键约束

通过__table_args__属性,使用PrimaryKeyConstraint明确指定复合主键的字段:

db = SQLAlchemy()
class Options(db.Model):
    __tablename__ = 'Options'

    trackerId = db.Column(db.Integer, db.ForeignKey("Tracker.trackerId"))
    name = db.Column(db.String)

    # 定义复合主键
    __table_args__ = (
        db.PrimaryKeyConstraint('trackerId', 'name'),
    )

方式二:直接在字段上标记主键

给需要作为复合主键的字段添加primary_key=True参数,SQLAlchemy会自动将多个标记为primary_key=True的字段组合成复合主键:

db = SQLAlchemy()
class Options(db.Model):
    __tablename__ = 'Options'

    # trackerId作为外键同时是复合主键的一部分
    trackerId = db.Column(db.Integer, db.ForeignKey("Tracker.trackerId"), primary_key=True)
    # name作为复合主键的另一部分
    name = db.Column(db.String, primary_key=True)

两种方式的效果完全一致,可根据代码风格偏好选择:

  • 方式一更适合需要添加额外表级约束的场景,可读性更强;
  • 方式二更简洁,直接在字段定义中完成主键声明。

需要注意的是,trackerId作为外键的属性不会被主键设置影响,它依然能正常关联Tracker表的trackerId字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:57:11