SQLAlchemy中的自引用
2024-08-26 15:47:15
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])
最新文章
- js模块化历程
- Delphi 获取临时数据集 ClientDataSet
- CEUtils---我在Unity中使用的一些小类库(不断更新中)
- QtSpim实现MIPS指令的编写
- boost-内存管理
- SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-004-消除bean自动装配的歧义@Primary
- 优质办公体验,掌上OA一机hold住全场
- MySQL--连接属性
- 50行实现简易HTTP服务器
- 交互式shell和非交互式shell的区别
- js中的数组对象排序(方法sort()详细介绍)
- GPU版的tensorflow在windows上的安装时的错误解决方案
- three.js实现3D模型展示
- selenium 操作键盘
- Forword(请求转发)与Redirect(重定向)	区别
- 深入解析SQL Server高可用镜像实现原理
- ctrl+E 快速显示当前打开的编辑列表
- javascript数据结构与算法--二叉树(插入节点、生成二叉树)
- zoj 2587 判断最小割的唯一性
- 20155234 2016-2017-2 《Java程序设计》第2周学习总结