Python SQLAlchemy循环一对一关系
我试图与SQLAlchemy建立一个循环的一对一关系(不确定正确的术语是什么),如下所示:Python SQLAlchemy循环一对一关系,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我试图与SQLAlchemy建立一个循环的一对一关系(不确定正确的术语是什么),如下所示: class Parent(Base): __tablename__ = 'parents' id = db.Column(Integer, primary_key=True) child_id = db.Column(db.Integer,db.ForeignKey("children.id", use_alter=True)) child = db.relationshi
class Parent(Base):
__tablename__ = 'parents'
id = db.Column(Integer, primary_key=True)
child_id = db.Column(db.Integer,db.ForeignKey("children.id", use_alter=True))
child = db.relationship("Child",
uselist=False,
foreign_keys=[child_id],
post_update=True)
class Child(Base):
__tablename__ = 'children'
id = db.Column(db.Integer, primary_key=True)
parent_id = db.Column(db.Integer, db.ForeignKey("parents.id"))
user = db.relationship("Parent",
uselist=False,
foreign_keys=[parent_id])
一切正常,直到我尝试db.drop_all()
时,我得到一个错误,sqlalchemy.sql.schema.ForeignKeyConstraint
name
为None
。当我试图建立这种一对一的循环关系时,我是否做错了什么?我真的希望能够只查询单个列以获取另一列的id,从而获得循环引用 来自:
然后,您可以整天使用Parent.child或child.Parent复数表名应被视为非法:您是否尝试过
child=db.relationship(“child”,cascade=“all,delete”)
?向您的帖子添加完整的回溯。在父类中,不应id=Column(Integer,primary\u key=True)
beid=db.Column(Integer,primary_key=True)
?我猜您正在将sqlalchemy导入为db…在这种情况下,我不确定您为什么没有收到错误,但您的父类id可能最终为无。请包括您使用的db和完整的回溯。
class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
child = relationship("Child", uselist=False, back_populates="parent")
class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))
parent = relationship("Parent", back_populates="child")