1:设置mysql原生分页

# 监控系统首页显示分页
def MyPagination(limitid,offsetid):
limitid =str(limitid)
offsetid =str(offsetid)    # 这里是mysql原生代码
show_goods = "select dal_keywordtable.* from (select asin, min(ranking) as minRanking from `dal_keywordtable` GROUP BY asin) t2 LEFT JOIN dal_keywordtable on t2.asin = dal_keywordtable.asin and t2.minRanking = dal_keywordtable.ranking limit " + limitid + " offset " + offsetid + ";"
return show_goods # 用于测试调用
ret = MyPagination(1,2)
print(ret) 返回结果是: # 这里只是确认下参数是否被调用进去
select dal_keywordtable.* from (select asin, min(ranking) as minRanking from `dal_keywordtable` GROUP BY asin) t2 LEFT JOIN dal_keywordtable on t2.asin = dal_keywordtable.asin and t2.minRanking = dal_keywordtable.ranking limit 1 offset 2; # 从第1个取 取2个

2:GET请求连接上找到传入的limit与offset:

from utils import orm  # 导入上面的分页连接,带参数调用这个方法

# 从第offsetid开始取,取limitid个
limitid = request._request.GET.get("limit")
offsetid = request._request.GET.get("offset")
raw_Pagination =MyPagination(limitid,offsetid)
obj_rawqueryset = models.KeyWordTable.objects.raw(raw_Pagination) # 得到

3:序列化查询的RawQueryset类型,返回json格式:

# 序列化
json_data = {}
data_list = []
for obj in obj_rawqueryset:
data = {} # 要在遍历里面创建字典用于存数据
print(obj)
data["goods_title"] = obj.goods_title
data["src"] = obj.src
data["single_keyword"] = obj.single_keyword
data["asin"] = obj.asin
data["seed_asin"] = obj.seed_asin
data["ranking"] = obj.ranking
data["position"] = obj.position
data["time"] = obj.time.strftime('%Y-%m-%d')
data_list.append(data)
json_data['data'] = data_list
return Response(json_data) # 返回给前端的json格式:
{
"data": [
{
"goods_title": "Sloggers Women's Waterproof Rain and Garden Shoe with Comfort Insole, Blue Swirls, Size 6, Style 5117SWL06",
"src": "https://images-na.ssl-images-amazon.com/images/I/41CSEL0bHeL._SS36_.jpg",
"single_keyword": null,
"asin": "B077TDGR51",
"seed_asin": "B01H7X9ASA",
"ranking": 666666,
"position": null,
"time": "2019-12-02"
},
{
"goods_title": "S1loggers Women's Waterproof Rain and Garden Shoe with Comfort Insole, Blue Swirls, Size 6, Style 5117SWL06",
"src": "https://images-na.ssl-images-amazon.com/images/I/41CSEL0bHeL._SS36_.jpg",
"single_keyword": null,
"asin": "B077TDGR53",
"seed_asin": "B01H7X9ASB",
"ranking": 666666,
"position": null,
"time": "2019-12-02"
},
{
"goods_title": "S2loggers Women's Waterproof Rain and Garden Shoe with Comfort Insole, Blue Swirls, Size 6, Style 5117SWL06",
"src": "https://images-na.ssl-images-amazon.com/images/I/41CSEL0bHeL._SS36_.jpg",
"single_keyword": null,
"asin": "B077TDGR52",
"seed_asin": "B01H7X9ASC",
"ranking": 2,
"position": null,
"time": "2019-12-03"
}
]
}

【django后端分离】mysql原生查询命令后,RawQueryset类型的自定义序列化返回json格式的更多相关文章

  1. Django 1.8.11 查询数据库返回JSON格式数据

    Django 1.8.11 查询数据库返回JSON格式数据 和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 环境 Win10 Python2.7 Django 1.8.11 返回多 ...

  2. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  3. nodejs操作 mongoose(mongodb)和Sequelize(mysql)查询数据后添加新属性未生效

    最近在着手koa时候,发现mongoose(mongodb)查询数据库后添加新属性,前端拿不到新属性问题, 然后测试了一下Sequelize(mysql),发现也有同样的问题存在.此时着手干! 1.1 ...

  4. Mysql运行状态查询命令及调优详解

    (转载自点击打开链接) MySQL运行状态及调优(一) 一.查看MySQL运行情况SHOW STATUS; 二.查看INNODB数据库引擎运行状态SHOW ENGINE INNODB STATUS; ...

  5. mysql常用查询命令

    转引自:https://www.cnblogs.com/widows/p/7137184.html 常用mysql命令 show variables like 'character_set_clien ...

  6. mysql特殊查询----分组后排序

    使用的示例表 学生表----student 表结构 数据 查询方法 一.第一种方法 我认为这是比较传统,比较容易理解的一种方式,使用自连接,并在连接条件中作比较,之后再对查询条件分组统计,排序. se ...

  7. 【django后端分离】rbac组件(文件源代码+使用)

    1:用户,角色,权限,菜单表设计 from django.db import models # 用户菜单 class UserMenu(models.Model): title = models.Ch ...

  8. Mysql—常见查询命令

    查询mysql的日志 -- 查找错误日志文件路径 mysql> show variables like "log_error"; -- 查找通用日志文件路径 mysql> ...

  9. MySQL常用查询命令(连接查询&子查询)

    多张表联合起来查询即为连接查询,可分为: 内连接:等值连接.非等值连接.自连接 外连接:右外连接.左外连接 也就是先把多张表通过某种指定条件用join...on...语法连接起来,然后再进行where ...

随机推荐

  1. springBoot 项目 jar/war打包 并运行

    一:idea  打jar  包 简述:springboor  项目最好的打包方式就是打成jar  ,下边就是简单的过程 1.打开idea工具 ,选着要打开的项目, 然后打开view--> too ...

  2. [转]Windows钩子

    Windows钩子 Windows应用程序的运行模式是基于消息驱动的,任何线程只要注册了窗口类就会有一个消息队列来接收用户的输入消息和系统消息.为了取得特定线程接收或发送的消息,就要 Windows提 ...

  3. 安装配置git服务

    创建git用户和组 groupadd -g git useradd -md /home/git -g -u git 安装依赖包 yum install curl-devel expat-devel g ...

  4. iTerm2配色和去掉profile提示框

    效果: 配色方案代码地址: https://github.com/mbadolato/iTerm2-Color-Schemes 点击最右边的绿色区域,再点击  “import”, 打开刚下载解压好的文 ...

  5. MyBatis配置文件(三)--typeAliases别名

    因为类的全限定名一般包括包名,显得很长,在使用过程中不是很方便,所以MyBatis中允许我们使用一种简写的方式来代替全限定名,这就是别名.这就相当于我们在玩微信的时候,有些人的昵称很长很难记,怎么办? ...

  6. Codec入门

    Codec 提供了一些公共的编解码实现,比如Base64, Hex, MD5等等. 工具类 package com.cxl.beanutil.util; import org.apache.commo ...

  7. 文件上传 - Commons FileUpload介绍

    概述 FileUpload能够以多种不同的方式使用,具体取决于应用程序的要求.在最简单的情况下,调用单个方法来解析servlet请求,然后处理解析出来的Item集合.此外也可以自定义FileUploa ...

  8. WCF简要介绍

    什么是WCF WCF的全称是:Windows Communication Foundation.从本质上来说,它是一套软件开发包,是微软公司推出的符合SOA思想的技术框架.WCF为程序员提供了丰富的功 ...

  9. TZ_16_Vue的v-model和v-on

    1.v-model是双向绑定,视图(View)和模型(Model)之间会互相影响. 既然是双向绑定,一定是在视图中可以修改数据,这样就限定了视图的元素类型.目前v-model的可使用元素有: inpu ...

  10. vue 安装 fontawesome

    查看最新版的fontawesome 信息: https://github.com/FortAwesome/vue-fontawesome 搜索图标 :https://fontawesome.com/i ...