在sqlalchemy中复合两个外键?

时间:2018-07-06 06:52:25

标签: python sqlalchemy flask-sqlalchemy

我在烧瓶中使用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

1 个答案:

答案 0 :(得分:1)

您不能有一个引用多个远程表的复合外键。复合外键是一种确保远程表具有复合主键的完整性的方法。

如果您要确保自己只有一个store_category_mappingcategory_idstore_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'),
        )