我试图用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树结构相关推荐

  1. python 创建json_使用Django和Python创建Json response的方法

    使用jQuery的.post提交,并期望得到多个数据,Python后台要使用json格式. 不指定datatype为json,让jquery自行判断数据类型.(注:跨域名请求数据,则使用 jsonp字 ...

  2. python大文件排序_python实现按创建时间对文件排序

    测试中,测试log是经常需要保存一段时间以便于后续查询,但是如果一段时间不删除,会导致硬盘空间变小而影响自动化测试,通常空间太小,自动化测试case就不能调用了,或者即使调用,可能会引起新测试的log ...

  3. 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服 ...

  4. python文件创建人_Python文件处理:创建、打开、追加、读、写

    在Python中,不需要导入外部库来读取和写入文件.Python为创建.写入和读取文件提供了内置的函数. 在本文中,我们将学习 如何创建文本文件 如何将数据附加到文件中 如何读取文件 如何逐行读取文件 ...

  5. Python中ArcPy读取Excel表格数据创建矢量要素图层并生成属性表字段与内容

    1 任务需求   首先,我们来明确一下本文所需实现的需求.   现有一个记录北京市部分PM2.5浓度监测站点信息的Excel表格数据,格式为.xls:文件内包含站点编号.X与Y坐标.站点名称等四列数据 ...

  6. python学习第八天---用Django框架创建可重用注册登录系统

    python学习第八天---用Django框架创建可重用注册登录系统 实现的功能 项目开始前的整体规划 搭建环境完成基础配置 创建app 更改语言和时区 数据库表生成 启动开发服务器 浏览器访问,检测 ...

  7. python在线爬取数据导入Neo4j创建知识图谱

    近期学习Neo4j,以豆瓣top250数据为研究对象,实现python在线爬取数据写入Neo4j创建知识图谱,下文详细介绍步骤. 1.知识图谱设计 通过分析网页,爬取网页可以得到movie.count ...

  8. Python数据可视化:如何用mplfinance创建蜡烛图

    一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形. 我们团队推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,使用matplotl ...

  9. Python Pandas 通过读取txt文件内容创建DataFrame

    本文主要介绍Python中,通过读取txt文件内容创建Pandas的DataFrame,创建DataFrame分别使用pd.DataFrame.from_records()和pd.read_csv() ...

最新文章

  1. Java程序中的死锁
  2. Android自定义属性、控件三步法
  3. P3804 【模板】后缀自动机
  4. mysql ldf文件太大_Linux_数据库清除日志文件(LDF文件过大),清除日志: 复制代码 代码如 - phpStudy...
  5. ubuntu18.04下安装grafana6和简单使用
  6. 从github clone文件: Failed to receive SOCKS4 connect request ack.
  7. 【Qt开发】Qt中显示图像的两种方法对比
  8. ADSL接入路由,电脑共享上网
  9. 如何求最小三元组距离
  10. 明华读卡器 循环读卡 初始卡号
  11. 计算机辅助设计学什么,计算机辅助设计课程教学大纲
  12. adc0808模数转换实验报告_模数转换ADC0832、ADC0808和ADC0809的利用
  13. C++ 实现matlab高斯滤波函数imgaussfilt
  14. 微软智能云Azure在华新增数据中心区域正式启用
  15. 【百度地图2.5D、3D在Vue项目中的使用】嵌入二维百度地图、三维百度地图、多种显示模式风格样式颜色的百度地图
  16. Typescript1-基本语法
  17. OraDump导出套件
  18. 程序员众生相——从乙方到甲方,我用了六年的时间
  19. 面试为什么需要了解JVM
  20. 突破制程工艺:为什么说7nm是物理极限,美国的1nm是什么概念?

热门文章

  1. 企业靠一套数据平台实现“低成本运营战略”,降低成本600万
  2. 提到刺这种兵器的guandan
  3. 【飞鸽传书3.0】飞鸽传书3.0关键字布局
  4. 目前我们再用的即时通讯软件
  5. EmEditor Professional 7.02 RC 3
  6. 微软Vista今起大幅降价 最高幅度达到千元
  7. 计算机族应常喝的健康饮品
  8. Facebook 正在大规模重构 React Native
  9. geetest php,Laravel 集成 Geetest验证码的方法php实例
  10. 利用c语言建立交易系统,【图】手把手教会你构建自己的交易系统 - 4_股票论坛,炒股公式,股票指标,股票公式,选股公式_数据、教程交流论坛_理想论坛 - 股票论坛...