Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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 Flask SqlAlchemy邻接列表关系backRef意外错误_Python_Orm_Sqlalchemy_Flask_Flask Sqlalchemy - Fatal编程技术网

Python Flask SqlAlchemy邻接列表关系backRef意外错误

Python Flask SqlAlchemy邻接列表关系backRef意外错误,python,orm,sqlalchemy,flask,flask-sqlalchemy,Python,Orm,Sqlalchemy,Flask,Flask Sqlalchemy,我正在一个小项目中工作,在这个项目中,我使用Flask SqlAlchemy来实现邻接列表关系。我有一个模型(表),它有一个db.Relationship()属性,该属性引用同一表的parent\u id列 以下是代码(部分): 当我尝试在Python Shell中使用子文件夹的backref属性将子文件夹添加到父文件夹时,如以下代码(部分): 但是,在Python shell中尝试之后,我遇到了以下错误: Traceback (most recent call last): File "&

我正在一个小项目中工作,在这个项目中,我使用Flask SqlAlchemy来实现邻接列表关系。我有一个模型(表),它有一个
db.Relationship()
属性,该属性引用同一表的
parent\u id

以下是代码(部分):

当我尝试在Python Shell中使用子文件夹的backref属性将子文件夹添加到父文件夹时,如以下代码(部分):

但是,在Python shell中尝试之后,我遇到了以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

TypeError: Incompatible collection type: Node is not list-like
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:不兼容的集合类型:节点与列表不同
我阅读了SqlAlchemy文档以找出解决方案,它们对于邻接列表关系具有类似的语法。它有一个类似的示例,但没有显示如何将父节点添加到子节点,就像我在shell中尝试的那样。将父节点添加到子节点的backref属性中的原因是它使用一对多关系。如果您能帮我找出代码中的问题,我们将不胜感激。。。请随时提出其他解决方案


谢谢

您以错误的方式配置了关系。请做这个:

from sqlalchemy.orm import backref
class Node(db.Model):
    # ...
    children = db.relationship('Node', backref=backref('parent', remote_side=[id]))


Van,感谢您提供代码片段并指出问题所在。我只是按照你刚才展示的方式配置了关系,猜猜看,它完全按照我的预期工作!谢谢。。。非常感谢您的及时帮助。
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

TypeError: Incompatible collection type: Node is not list-like
from sqlalchemy.orm import backref
class Node(db.Model):
    # ...
    children = db.relationship('Node', backref=backref('parent', remote_side=[id]))
class Node(db.Model):
    # ...
    parent = db.relationship("Node", backref='children', remote_side=[id])