django 数据库返回queryset实现封装为字典

默认情况下,Python DB API会返回不带字段的结果,这意味着你得到的是一个列表,而不是一个字典。花费一点性能代价之后,你可以返回一个字典形式的结果,像这样:

def dictfetchall(cursor):
 "Returns all rows from a cursor as a dict"
 desc = cursor.description
 return [
  dict(zip([col[0] for col in desc], row))
  for row in cursor.fetchall()
 ]

demo:

from django.db import connection
if __name__ == '__main__':
  """db=db_operate()
  sql='select DISTINCT t1.HostName,t2.IpAddress,t2.RegName,t2.AppUser,t2.`Desc` from machineinfo as t1,asset_appregioninfo as t2 where t1.IpAddress=t2.IpAddress;'
  result=db.mysql_command(settings.conn, sql)
  dic=dict(result)
  print dic
  """
  cur=connection.cursor()
  cur.execute('select DISTINCT t1.HostName,t2.IpAddress,t2.RegName,t2.AppUser,t2.`Desc` from machineinfo as t1,asset_appregioninfo as t2 where t1.IpAddress=t2.IpAddress;')
  dic=dictfetchall(cur)
  print dic

这样在前台,就可以通过

{%for i in dic%}
{i.字段}

生成列表了

补充知识:[django] queryset系列化3种方式model_to_dict、serializers

我就废话不多说了,大家还是直接看代码吧!

# 序列化方式1:
from django.forms.models import model_to_dict
import json
data=[]
for obj in book_list:
  data.append(model_to_dict(obj))
print(data)
return HttpResponse("ok")

# 序列化方式2:
data=serializers.serialize("json",book_list)
return HttpResponse(data)

# 序列化方式3:
bs=BookSerializers(book_list,many=True)
return Response(bs.data)

以上这篇django 数据库返回queryset实现封装为字典就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 使用python和Django完成博客数据库的迁移方法

    上一讲完成了基本博客的配置和项目工程的生成.这次开始将博客一些基本的操作主要是数据库方面学习. 1.设计博客数据库表结构 博客最主要的功能就是展示我们写的文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个地方就是数据库.我们把写好的文章永久地保存在数据库里,当用户访问我们的博客时,Django 就去数据库里把这些数据取出来展现给用户. 博客的文章应该含有标题.正文.作者.发表时间等数据.一个更加现代化的博客文章还希望它有分类.标签.评论等.为了更好地存储这些数据,我们需要合理

  • Django ValuesQuerySet转json方式

    在使用ValuesQuerySet存放查询结果时,有时需要转为json,但并不能直接使用json.dumps()直接转,而是需要经过下面一个步骤: result_set = Apple.objects.all().values() print type(result_set) data_list = result_set[:] # queryset转为list print type(data_list) output: <class 'django.db.models.query.ValuesQ

  • 在Python的Django框架中更新数据库数据的方法

    先使用一些关键参数创建对象实例,如下: >>> p = Publisher(name='Apress', ... address='2855 Telegraph Ave.', ... city='Berkeley', ... state_province='CA', ... country='U.S.A.', ... website='http://www.apress.com/') 这个对象实例并 没有 对数据库做修改. 在调用`` save()`` 方法之前,记录并没有保存至数据库,

  • django 数据库返回queryset实现封装为字典

    默认情况下,Python DB API会返回不带字段的结果,这意味着你得到的是一个列表,而不是一个字典.花费一点性能代价之后,你可以返回一个字典形式的结果,像这样: def dictfetchall(cursor): "Returns all rows from a cursor as a dict" desc = cursor.description return [ dict(zip([col[0] for col in desc], row)) for row in cursor

  • Python的Django框架实现数据库查询(不返回QuerySet的方法)

    一.创建模型类: # -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models class Course(models.Model): """课程表""" name = models.CharField(verbose_name='课程名称', max_length=255) description = models.Tex

  • django 数据库 get_or_create函数返回值是tuple的问题

    get_or_create函数比较好用. 如果查询到就返回,如果没查询到就向数据库加入新的对象. e.g. size = Size.objects.get_or_create(sizeName=size_text) 注意:返回的是tuple,:(对象, 是否是创建的) e.g. (size, created) 补充知识:Django update_or_create 注意事项 需求: model 修改数据库数据,数据存在则更新,不存在则保存 update_or_create 用法: update

  • Django 查询数据库返回JSON的实现

    目录 返回多条数据 返回单个对象 和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 返回多条数据 示例 import json from django.http import HttpResponse from django.core import serializers def db_to_json(request): scripts = Scripts.objects.all()[0:1] json_data = serializers.serialize('json',

  • Django数据库操作的实例(增删改查)

    创建数据库中的一个表 class Business(models.Model): #自动创建ID列 caption = models.CharField(max_length=32) code = models.CharField(max_length=32) 1.增加 方法一 models.Business.objects.create(caption='市场部',code='123') 方法二 obj = models.UserInfo(caption='市场部',code='123') o

  • Django数据库操作之save与update的使用

    Python框架Django有着诸多优点,它提供的models可以让开发者方便地操作数据库,但正是由于对上层的良好的封装,使得提升数据库操作性能必须要清楚地知道Django的数据库操作到底执行了哪些SQL语句. 例如数据更新操作,对单条记录,可以使用save或者是update两种方式 在Django工程下的settings.py下将log设置为DEBUG,即可查看save和update分别执行了哪些SQL语句 如有一张表名叫做Example 使用save: k = Example.objects

  • laravel 判断查询数据库返回值的例子

    在使用 Laravel Eloquent 模型时,我们可能要判断取出的结果集是否为空,但我们发现直接使用 is_null 或 empty 是无法判段它结果集是否为空的. var_dump 之后我们很容易发现,即使取到的空结果集, Eloquent 仍然会返回 Illuminate\Database\Eloquent\Collection 对象实例. 其实,Eloquent 已经给我们封装几个判断方法. $result = Model::where(...)->get(); //不为空则 if (

  • Django数据库(SQlite)基本入门使用教程

    目录 1:创建工程 2:创建blog应用 3:数据库操作 4.在blog_demo表中添加数据: 总结 1:创建工程 django-admin startproject mysite 创建完成后,工程目录结构如下: manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等. settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量. urls.py ----- 负责把URL模式映射到应用程序. 2:

  • Django数据库表反向生成实例解析

    本文我们研究下如何在django中反向生成mysql model代码,接下来我们看看具体介绍. 我们在展示django ORM反向生成之前,我们先说一下怎么样正向生成代码. 正向生成,指的是先创建model.py文件,然后通过django内置的编译器,在数据库如mysql中创建出符合model.py的表. 反向生成,指的是先在数据库中create table,然后通过django内置的编译器,生成model代码. 1.准备工作 创建django工程以及app 创建django工程,名字是hell

  • django请求返回不同的类型图片json,xml,html的实例

    django 返回数据的主要是用django.http.HttpResponse 中的HttpResponse 完成的 具体的我直接贴代码吧 from django.http import HttpResponse ### 引用 def index(request): if request.GET["type"] == "img": return HttpResponse(open("test.png","rb"),conte

随机推荐