码迷,mamicode.com
首页 > 数据库 > 详细

SQLAlchemy中的自引用

时间:2018-03-02 01:22:29      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:ase   data   lis   root   att   children   body   parent   ati   

SQLALCHEMY采用adjacency list pattern来表示类的自引用。

例如,对于类Node自引用:

class Node(Base):
    __tablename__=node
    id=Column(Integer,primary_key=True)
    parent_id=Column(Integer,ForeignKey(node.id))
   data=Column(String(50))
    children=relationship(Node)

对于如下图所示的结构:

root--------------->child1

-------->child2---------->subchild1

---------->subchild2

-------->child3

可能有如下数据:

id parent_id data

1 NULL root

2 1 child1

3 1 child2

4 3 subchild1

5 3 subchild2

6 1 child3

无论自引用是一对多还是多对一,通常默认是一对多。如果想建立多对一的关系,需要在relationship()中添加remote_side属性,remote_side属性包含一列或多列。如:

class Node(Base):
    __tablename__=node
    id=Column(Integer,primary_key=True)
    parent_id=Column(Integer,ForeignKey(node.id))
    data=Column(String(50))
    parent=relationship("Node",remote_side=[id])

 

SQLAlchemy中的自引用

标签:ase   data   lis   root   att   children   body   parent   ati   

原文地址:https://www.cnblogs.com/huchong/p/8298603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!