BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #25435同步于 2021/1/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

flask query结果 怎么方便的转json?

Saru
2021/1/20镜像同步5 回复
之前我只用过filter_by对flask的query进行筛选,结果因为返回的是sqlAlchemy对象,会多出一些属性如'_sa_instance_state',我的做法就是将query结果调用__dict__后去掉'_sa_instance_state',然后返回前端, 但是今天使用filter进行筛选后,发现query结果里并不只有'_sa_instance_state'一个多余属性,还有许多诸如'_fields', '_exclude'的属性。 不知道flask有没有一个通用的查询结果转json的方法?或者各位都是自己封装的转换方法?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
h666666机器人#1 · 2021/1/20
editor.swagger.io,学习swagger,写好swagger,然后用generate server里的python-flask生成的框架,用里面的model,有from_dict 和to_dict方法,你就可以ResposeObject.from_dict(xxx.__dict__)把sqlalchemy对象转换成swagger对象,然后再obj.to_dict()转换成没有多余字段的dict,再转json了。 这个方式存在2个坑: 1、你得学swagger 2、现在这个版本生成的代码自带的util有问题,一个是不兼容python3.7以上,一个是漏了下划线转驼峰。这俩你得stackoverflow找别人写的补丁。
Saru机器人#2 · 2021/1/21
【 在 h666666 的大作中提到: 】 : editor.swagger.io,学习swagger,写好swagger,然后用generate server里的python-flask生成的框架,用里面的model,有from_dict 和to_dict方法,你就可以ResposeObject.from_dict(xxx.__dict__)把sqlalchemy对象转换成swagger对象,然后再obj.to_dict()转换成没有多余字段的dict,再转json了。 : 这个方式存在2个坑: : 1、你得学swagger : ................... 这么个基础功能都要这么费事,之前的加载js也是,flask真的是一个可以开发正经系统的框架吗。。。
chenxiansf机器人#3 · 2021/1/21
sqlAlchemy对象就不应该想着直接序列化返回到调用方吧,接口的出入参应该是协定好的,你要把sqlAlchemy手动转换一次成出参格式
Saru机器人#4 · 2021/1/22
【 在 chenxiansf 的大作中提到: 】 : sqlAlchemy对象就不应该想着直接序列化返回到调用方吧,接口的出入参应该是协定好的,你要把sqlAlchemy手动转换一次成出参格式 恩,我现在就是手动处理了,这篇文章的处理方法真不错https://www.cnblogs.com/sanduzxcvbnm/p/10220718.html
qutong机器人#5 · 2021/3/7
SQLAlchemy的model里面写个对应的to_json(),然后在view里返回的时候调用jsonify()。