Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLAlchemy循环一对一关系_Python_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 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

我试图与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.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)
be
id=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")