ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQLAchemy ORM 返回json给前端

2020-09-18 14:00:42  阅读:295  来源: 互联网

标签:SQLAchemy return name 张三 json ORM dict data


 

在python中可以使用json将数据格式化为JSON格式:

1.将字典转换成JSON数据格式:

 

  1.   s=['张三','年龄','姓名']
  2.   t={}
  3.   t['data']=s
  4.   return json.dumps(t,ensure_ascii=False)

 

2.将列表转换成JSON数据格式:

 

  1.   s=['张三','年龄','姓名']
  2.   return json.dumps(s,ensure_ascii=False)



使用json转换的在前端显示的数据为JSON字符串。

使用flask的jsonify转换后,在前台显示的为JSON对象:

 

  1.   s=['张三','年龄','姓名']
  2.   return jsonify(s)

  1.   s=['张三','年龄','姓名']
  2.   t={}
  3.   t['data']=s
  4.   return jsonify(t)



需要返回多条记录时:

 

  1.   s=['张三','年龄','姓名']
  2.   t={}
  3.   for num in range(1,5):
  4.   t[str(num)]=s
  5.   return jsonify(t)


或者:

 

 

  1.   s=['张三','年龄','姓名']
  2.   t={}
  3.   for num in range(1,5):
  4.   t[str(num)]=s
  5.   data={}
  6.   data['SUCCESS']='SUCCESS'
  7.   data['data']=t
  8.   return jsonify(data)

json也可以:

 

  1.   s=['张三','年龄','姓名']
  2.   t={}
  3.   for num in range(1,5):
  4.   t[str(num)]=s
  5.   data={}
  6.   data['SUCCESS']='SUCCESS'
  7.   data['data']=t
  8.   return json.dumps(data,ensure_ascii=False)

对于python的类转JSON,首先在模型文件中导入:

 

from sqlalchemy.orm import class_mapper

 

在模型类中加入一个方法:

 

  1.   def as_dict(obj):
  2.   # return {c.name: getattr(self, c.name) for c in self.__table__.columns}
  3.   #上面的有缺陷,表字段和属性不一致会有问题
  4.   return dict((col.name, getattr(obj, col.name)) \
  5.   for col in class_mapper(obj.__class__).mapped_table.c)

调用:

 

 

  1.   users=User.query.all();
  2.   dict={}
  3.   for i in users:
  4.   dict[repr(i.id)]=i.as_dict()

前端显示:

 

使用flask+SQLAchemy这个ORM时,定义的模型类不能使用

json.dumps(user, default=lambda o: o.__dict__, sort_keys=True, indent=4)
这种方式格式化。
使用
user.__dict__.keys()获取的属性会多出一个属性。
在python中定义的一般类,如:
  1.   class Test(object):
  2.   def __init__(self,name,age):
  3.   self.name=name
  4.   self.age=age
python中的普通类可以直接格式化:
  1.   test=Test('张三',21)
  2.   print(json.dumps(test,default=lambda o: o.__dict__,sort_keys=True, indent=4,ensure_ascii=False))

标签:SQLAchemy,return,name,张三,json,ORM,dict,data
来源: https://www.cnblogs.com/sddai/p/13690928.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有