SQLAlchemy:有关构建树的问题?

时间:2018-07-19 19:22:28

标签: python database sqlalchemy relational-database

我正在尝试使用烧瓶创建我的第一个应用程序。到目前为止,这是我的节点类:

class TreePage(db.Model):
    __tablename__ = 'tree'
    id = db.Column(db.Integer, primary_key= True)
    name = db.Column(db.String(100), nullable= False)
    content = db.Column(db.String)

    parent_id = db.create_all(db.Integer, db.ForeignKey('id'))

    children = db.relationship('TreeNode', cascade = "all",
    backref = db.backref("parent", remote_side='TreeNode.id'),
    collection_class = db.attribute_mapped_collection('name')
    )

对于SQLAlchemy和数据库来说,它们是新手,所以我在这里以及在SQLAlchemy文档中阅读的许多信息都很难掌握。

我现在的目标是能够访问一棵树及其内容,然后如果该树有孩子,则可以选择要学习的孩子; this基本上是我想要制作的图像的视觉表示。

我的猜测是这应该是一对多的关系,所以我将不必与本地/远程机构打交道了吗?目前,这两者使我感到困惑。接下来,我是否需要担心cascade参数,还是可以暂时保留它?

最后,我想巩固自我参照关系的工作方式。对于两个不同的类,我很容易理解:“一个”关系创建一个relationship对象,然后“许多”对象创建一个引用其所有者主键的外键。但是,在自引用关系的情况下,“所有者”是持有idparent_id作为之前任何父对象的ID的对象吗?谢谢,如果这一切令人困惑,我深表歉意。

0 个答案:

没有答案