最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

数据库数据转换成JSON格式实例详解

来源:动视网 责编:小采 时间:2020-11-27 14:23:38
文档

数据库数据转换成JSON格式实例详解

数据库数据转换成JSON格式实例详解:最近打算搞一个自动化运维平台,所以在看Django的知识。 在实际项目开发中,遇到一个小问题:前后端发生数据交互主流采用的是JSON。前端传数据到服务器端比较简单,稍微麻烦的是服务器端传JSON到前端。 首先数据是从数据库中获取的,Django默认使用的是OR
推荐度:
导读数据库数据转换成JSON格式实例详解:最近打算搞一个自动化运维平台,所以在看Django的知识。 在实际项目开发中,遇到一个小问题:前后端发生数据交互主流采用的是JSON。前端传数据到服务器端比较简单,稍微麻烦的是服务器端传JSON到前端。 首先数据是从数据库中获取的,Django默认使用的是OR


最近打算搞一个自动化运维平台,所以在看Django的知识。

在实际项目开发中,遇到一个小问题:前后端发生数据交互主流采用的是JSON。前端传数据到服务器端比较简单,稍微麻烦的是服务器端传JSON到前端。

首先数据是从数据库中获取的,Django默认使用的是ORM技术,但是作为一个运维人员,我其实比较反感这类抽象出来的API。因为尽管它对于开发人员来说,将数据库的表抽象成了一个对象,便于开发,不需要写SQL语句,但是这也是后期程序造成性能瓶颈的罪魁祸首(再做一次故障处理时,遇到一条70几行的SQL语句。。。),另外对于一个运维人员来说,纯SQL是基本能力,再次去学习ORM的语法,无形中又增加了学习成本。

不管怎么说,这次的主题是将从数据库获取数据转换成JSON,下面会将用ORM和SQL两种方式都拿出来分享。

1.采用Django Model层,ORM技术 转换成JSON格式

1 def getdata(request):2 # 使用ORM3 # all()返回的是QuerySet 数据类型;values()返回的是ValuesQuerySet 数据类型4 data = models.VM.objects.values('id', 'ip', 'host', 'username')5 data = serializers.serialize("json", tomcats)6 return JsonResponse(list(data), safe=False)

2.完全弃用Django Model层,纯SQL 转换成JSON格式

1 def getdata(request):2 # 使用SQL3 with connection.cursor() as cursor:4 cursor.execute('select id, machine, tomcathome, ipaddress, description from tomcatData')5 data = dictfetchall(cursor)6 return JsonResponse(data, safe=False, json_dumps_params={'ensure_ascii': False})

JsonResponse 对象:

class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None,**kwargs)

这个类是HttpRespon的子类,它主要和父类的区别在于:

1.它的默认Content-Type 被设置为: application/json

2.第一个参数,data应该是一个字典类型,当 safe 这个参数被设置为:False ,那data可以填入任何能被转换为JSON格式的对象,比如list, tuple, set。 默认的safe 参数是 True. 如果你传入的data数据类型不是字典类型,那么它就会抛出 TypeError的异常。

3.json_dumps_params参数是一个字典,它将调用json.dumps()方法并将字典中的参数传入给该方法。

通过以上的解释,上面两个方法的JsonResponse()里面传入的参数就很清晰明了。

这样数据就会以JSON格式传入到前端,前端就能用AJAX获取到,并进行处理或者展示了。

文档

数据库数据转换成JSON格式实例详解

数据库数据转换成JSON格式实例详解:最近打算搞一个自动化运维平台,所以在看Django的知识。 在实际项目开发中,遇到一个小问题:前后端发生数据交互主流采用的是JSON。前端传数据到服务器端比较简单,稍微麻烦的是服务器端传JSON到前端。 首先数据是从数据库中获取的,Django默认使用的是OR
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top