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. HDU--2191 汶川地震购米(多重背包)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2191 分析:有资金n元,而市场有m种大米,每种大米价格不等,重量不等,数量不等, 并且只能整袋购买.如何用 ...

  2. 新启vue_cli项目+引入Element

    [1]安装vue_cli vue init webpack 项目名字 [2]安装Element-UI cnpm install element-ui -S //写入dependencies cnpm ...

  3. thymeleaf报错元素类型必须由匹配的结束标记终止

    spring boot 1.x 版本中thymeleaf报错元素类型 “link” 必须由匹配的结束标记 “</link>” 终止解决办法: 1.在pom.xml文件中添加: <de ...

  4. CodeChef TRIPS-Children Trips 树上分块

    参考文献国家集训队2015论文<浅谈分块在一类在线问题的应用>-邹逍遥 题目链接 题目大意 一棵n个节点的树,树的每条边长度为1或2,每次询问x,y,z. 要求输出从x开始走,每次只能走到 ...

  5. 跟我一起了解koa之koa-generator(一)

    cnpm install -g koa-generator koa2 -e koa2-learn cd koa2-learn/ cnpm install 使用如下运行 DEBUG=koa2-learn ...

  6. 6.Spring【AOP】XML方式

    1.AOP术语 1. Joinpoint(连接点):所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spring只支持方法类型的连接点 2. Pointcut(切入点):所谓切 ...

  7. Django项目:CMDB(服务器硬件资产自动采集系统)--10--06CMDB测试Linux系统采集硬件数据的命令05

    cd /py/AutoClient/bin python3 auto-client.py /usr/local/python3/bin/pip install requests python3 aut ...

  8. 装配SpringBean(六)--配置文件加载方式

    spring中的配置文件有两种: 以XML结尾的spring配置文件 以properties结尾的属性配置文件 在spring中有两种方式加载这两种文件: 通过注解+java配置的方式 通过XML的方 ...

  9. jmeter是什么

    Apache JMeter 是Apache 组织开发的基于 Java 的压力测试工具: 适用的测试领域:地方 用于对软件做压力测试,它可以用于测试静态和动态资源,例如:静态文件,Java 小程序.CG ...

  10. Python - 基本数据类型及其常用的方法之列表

    列表: 特点:用 [] 括起来,切元素用逗号分隔:列表内的元素可以为任何的数据类型. 列表的基本操作: 1.修改 li = [12, 5, 6, ["Aiden", [2, 4], ...