python 树结构 sqlalchemy_如何从SQLalchemy mod创建json树结构
我试图用Flask创建一个webservice,我的webservice需要返回一个json编码的树结构,它包含属于一个概要文件的所有活动。在
我的模型:class Activity(db.Model):
__tablename__ = 'activity'
id = db.Column(db.Integer, primary_key=True)
profile_id = db.Column(db.String, db.ForeignKey('profile.id'), nullable=False, index=True)
parent_id = db.Column(db.Integer, db.ForeignKey('activity.id'), index=True)
name = db.Column(db.String)
parent = db.relationship('Activiteit', remote_side=[id], backref='children')
class Profile(db.Model):
__tablename__ = 'profile'
id = db.Column(db.Integer, primary_key=True)
profile_name = db.Column(db.String(64))
active = db.Column(db.Boolean, nullable=False)
activities = db.relationship('Activity', backref="profile", lazy='dynamic')
employees = db.relationship('Employee', backref="profile", lazy='dynamic')
我需要以下结构:
^{pr2}$
我尝试创建嵌套的dict和dict列表,但是每次我都被卡住了。以1级元素结尾的3级元素或只返回2级的树。在
经过一番搜索后,我发现我需要创建一个队列,其中包含一个名称和一个子列表的节点,然后将这些节点添加到树中。在
我用以下函数创建了队列:def get(self, profile_id):
profile = models.Profile.query.get(profile_id)
queue = {}
for activity in profile.activities:
queue[activity.name]= [c.name for c in activity.children]
现在我不知道该怎么做,也不知道我走的路是否正确。任何帮助都将不胜感激
编辑
基于Codegeek's答案,我创建以下内容:def get(self, profile_id):
activities = models.Activity.query.filter_by(profile_id=profile_id).all()
tree = {}
for level1 in activities:
if level1.parent_id is None:
tree[level1.name] = {'id': level1.id}
for level2 in level1.children:
tree[level1.name][level2.name] = {'id': level2.id}
for level3 in level2.children:
tree[level1.name][level2.name][level3.name] = {'id': level3.id}
return tree
python 树结构 sqlalchemy_如何从SQLalchemy mod创建json树结构相关推荐
- python 创建json_使用Django和Python创建Json response的方法
使用jQuery的.post提交,并期望得到多个数据,Python后台要使用json格式. 不指定datatype为json,让jquery自行判断数据类型.(注:跨域名请求数据,则使用 jsonp字 ...
- python大文件排序_python实现按创建时间对文件排序
测试中,测试log是经常需要保存一段时间以便于后续查询,但是如果一段时间不删除,会导致硬盘空间变小而影响自动化测试,通常空间太小,自动化测试case就不能调用了,或者即使调用,可能会引起新测试的log ...
- aws v2.2.exe_如何使用Python 3.6在AWS EC2上创建运行uWSGI,NGINX和PostgreSQLDjango服务器...
aws v2.2.exe by Sumeet Kumar 通过Sumeet Kumar 如何使用Python 3.6在AWS EC2上创建运行uWSGI,NGINX和PostgreSQLDjango服 ...
- python文件创建人_Python文件处理:创建、打开、追加、读、写
在Python中,不需要导入外部库来读取和写入文件.Python为创建.写入和读取文件提供了内置的函数. 在本文中,我们将学习 如何创建文本文件 如何将数据附加到文件中 如何读取文件 如何逐行读取文件 ...
- Python中ArcPy读取Excel表格数据创建矢量要素图层并生成属性表字段与内容
1 任务需求 首先,我们来明确一下本文所需实现的需求. 现有一个记录北京市部分PM2.5浓度监测站点信息的Excel表格数据,格式为.xls:文件内包含站点编号.X与Y坐标.站点名称等四列数据 ...
- python学习第八天---用Django框架创建可重用注册登录系统
python学习第八天---用Django框架创建可重用注册登录系统 实现的功能 项目开始前的整体规划 搭建环境完成基础配置 创建app 更改语言和时区 数据库表生成 启动开发服务器 浏览器访问,检测 ...
- python在线爬取数据导入Neo4j创建知识图谱
近期学习Neo4j,以豆瓣top250数据为研究对象,实现python在线爬取数据写入Neo4j创建知识图谱,下文详细介绍步骤. 1.知识图谱设计 通过分析网页,爬取网页可以得到movie.count ...
- Python数据可视化:如何用mplfinance创建蜡烛图
一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形. 我们团队推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,使用matplotl ...
- Python Pandas 通过读取txt文件内容创建DataFrame
本文主要介绍Python中,通过读取txt文件内容创建Pandas的DataFrame,创建DataFrame分别使用pd.DataFrame.from_records()和pd.read_csv() ...
最新文章
- Java程序中的死锁
- Android自定义属性、控件三步法
- P3804 【模板】后缀自动机
- mysql ldf文件太大_Linux_数据库清除日志文件(LDF文件过大),清除日志: 复制代码 代码如 - phpStudy...
- ubuntu18.04下安装grafana6和简单使用
- 从github clone文件: Failed to receive SOCKS4 connect request ack.
- 【Qt开发】Qt中显示图像的两种方法对比
- ADSL接入路由,电脑共享上网
- 如何求最小三元组距离
- 明华读卡器 循环读卡 初始卡号
- 计算机辅助设计学什么,计算机辅助设计课程教学大纲
- adc0808模数转换实验报告_模数转换ADC0832、ADC0808和ADC0809的利用
- C++ 实现matlab高斯滤波函数imgaussfilt
- 微软智能云Azure在华新增数据中心区域正式启用
- 【百度地图2.5D、3D在Vue项目中的使用】嵌入二维百度地图、三维百度地图、多种显示模式风格样式颜色的百度地图
- Typescript1-基本语法
- OraDump导出套件
- 程序员众生相——从乙方到甲方,我用了六年的时间
- 面试为什么需要了解JVM
- 突破制程工艺:为什么说7nm是物理极限,美国的1nm是什么概念?
热门文章
- 企业靠一套数据平台实现“低成本运营战略”,降低成本600万
- 提到刺这种兵器的guandan
- 【飞鸽传书3.0】飞鸽传书3.0关键字布局
- 目前我们再用的即时通讯软件
- EmEditor Professional 7.02 RC 3
- 微软Vista今起大幅降价 最高幅度达到千元
- 计算机族应常喝的健康饮品
- Facebook 正在大规模重构 React Native
- geetest php,Laravel 集成 Geetest验证码的方法php实例
- 利用c语言建立交易系统,【图】手把手教会你构建自己的交易系统 - 4_股票论坛,炒股公式,股票指标,股票公式,选股公式_数据、教程交流论坛_理想论坛 - 股票论坛...