Python SQLAlchemy关系错误与一对多关系

Python SQLAlchemy关系错误与一对多关系,python,mysql,sqlalchemy,one-to-many,Python,Mysql,Sqlalchemy,One To Many,所以我在SQLAlchemy(0.8)中有一对多关系: 及 我可以创建此数据库,但当我尝试操作它时,会出现以下错误: sqlalchemy.exc.AmbiguousForeignKeyError:无法确定加入 关系parent.childs_rel上的父/子表之间的条件 -有多个外键路径链接表。指定'foreign_keys'参数,提供以下列的列表: 应计为包含对父级的外键引用 桌子 我曾尝试在childs_rel中指定“外键”,但它说父类中没有外键,这是真的。。。这必须在子类中指定,但根据S

所以我在SQLAlchemy(0.8)中有一对多关系:

我可以创建此数据库,但当我尝试操作它时,会出现以下错误:

sqlalchemy.exc.AmbiguousForeignKeyError:无法确定加入 关系parent.childs_rel上的父/子表之间的条件 -有多个外键路径链接表。指定'foreign_keys'参数,提供以下列的列表: 应计为包含对父级的外键引用 桌子

我曾尝试在childs_rel中指定“外键”,但它说父类中没有外键,这是真的。。。这必须在子类中指定,但根据SQLAlchemy的ORM文档,关系在“一对多”关系中的“一”中定义

你认为这里发生了什么?
太多了

我想我知道这里发生了什么:

请注意,您不能定义“复合”外键约束,即 是一组多个父/子列之间的约束, 使用ForeignKey对象。要定义此分组,请使用 必须使用ForeignKeyConstraint对象,并将其应用于表。 关联的ForeignKey对象将自动创建

对不起,伙计们。反正是Thx!:D

编辑:以下是我为有需要的人提供的解决方案:

class Child(Base):

    __tablename__ = "childs"

    mid = Column(Integer(11), primary_key = True, autoincrement = False)
    cid = Column(Integer(11), primary_key = True)
    uid = Column(Integer(11), primary_key = True)

    __table_args__ = (ForeignKeyConstraint([cid, uid], [Parent.cid, Parent.uid]), {})
class Child(Base):

    __tablename__ = "childs"

    mid = Column(Integer(11), primary_key = True, autoincrement = False)
    cid = Column(Integer(11), ForeignKey('parents.cid',
           ondelete = 'CASCADE'), primary_key = True)
    uid = Column(Integer(11), ForeignKey('parents.uid',
           ondelete = 'CASCADE'), primary_key = True)
    ...
class Child(Base):

    __tablename__ = "childs"

    mid = Column(Integer(11), primary_key = True, autoincrement = False)
    cid = Column(Integer(11), primary_key = True)
    uid = Column(Integer(11), primary_key = True)

    __table_args__ = (ForeignKeyConstraint([cid, uid], [Parent.cid, Parent.uid]), {})