我在烧瓶中使用SQLALchemy。我很困惑如何用两个外键定义组合键。 一个表中的一个外键,另一表中的一个外键。
class Store_category_mapping(db.Model):
__tablename__ = 'store_category_mapping'
category_id = db.Column(db.Integer, nullable=False)
store_id = db.Column(db.Integer, nullable=False)
store_name = db.Column(db.String(50), nullable=False)
__table_args__ = (
db.ForeignKeyConstraint(
[category_id, store_id],
[Category_master.category_id, Store_master.store_id]
),
)
出现此错误:
sqlalchemy.exc.ArgumentError:ForeignKeyConstraint在 store_category_mapping(category_id,store_id)指多个 远程表:category_master和store_master
答案 0 :(得分:1)
您不能有一个引用多个远程表的复合外键。复合外键是一种确保远程表具有复合主键的完整性的方法。
如果您要确保自己只有一个store_category_mapping
和category_id
和store_id
给定组合的条目,则可以选择UniqueConstraint。 / p>
我不熟悉烧瓶,但是我认为它看起来像这样:
class Store_category_mapping(db.Model):
__tablename__ = 'store_category_mapping'
category_id = db.Column(db.Integer, db.ForeignKey(Category_master.category_id), nullable=False)
store_id = db.Column(db.Integer, db.ForeignKey(Store_master.store_id), nullable=False)
store_name = db.Column(db.String(50), nullable=False)
__table_args__ = (
db.UniqueConstraint('category_id','store_id'),
)