专栏首页从零开始学自动化测试python测试开发django-79.ORM查询之datetime()格式化(extra )

python测试开发django-79.ORM查询之datetime()格式化(extra )

前言

django 查询数据库的时候,数据存的是 datetime() 日期格式的数据 ‘2020-06-22 22:34:14’ 但是我们用 ORM 查询的时候,查询出来的结果是 ‘datetime.datetime(2020, 6, 22, 22, 34, 14)}’ 跟我们预期的结果不符合。 如果每次对查询的结果日期格式后再输出会比较麻烦,最好的解决办法是在查询的时候对日期格式化,这样查询的结果就不用二次处理

问题描述

使用 sql 查询,数据库里面的日期格式是’2020-06-22 22:34:14’

SELECT * from yoyo_card where card_user = ‘yoyo2’;

使用 django 查询的结果是 ‘add_time’: datetime.datetime(2020, 6, 22, 22, 34, 14)

Card.objects.filter(card_user=’yoyo2’).values()

MyDjango>python manage.py shell
>>> from yoyo.models import Card
>>>
>>> Card.objects.filter(card_user='yoyo2').values()
<QuerySet [{'id': 2, 'card_id': '520000000001', 'card_user': 'yoyo2', 'add_time': datetime.datetime(2020, 6, 22, 22, 34, 14)}]>
>>>

我们期望查询的结果,日期应该显示 格式化后的字符串 'add_time': '2020-06-22 22:34:14'

使用 extra 查询

先用 sql 的 DATE_FORMAT 查询,把日期格式化

SELECT card_id, card_user, DATE_FORMAT(add_time, '%Y-%m-%d %H:%i:%s')  as add_time
from yoyo_card where card_user = 'yoyo2';

那么对应 django 的 extra 查询,% 是python操作符,这里用两个%%表示

Card.objects.filter(card_user=’yoyo2’).extra(select={‘add_time’:’DATE_FORMAT(add_time, “%%Y-%%m-%%d %%H:%%i:%%s”)’})

# 作者-上海悠悠 QQ交流群:717225969
MyDjango>python manage.py shell
>>> from yoyo.models import Card
>>>
>>> Card.objects.filter(card_user='yoyo2').extra(select={'add_time':'DATE_FORMAT(add_time, "%%Y-%%m-%%d %%H:%%i:%%s")'}).values('card_id', 'card_user', 'add_time')
<QuerySet [{'add_time': '2020-06-22 22:34:14', 'card_id': '520000000001', 'card_user': 'yoyo2'}]>
>>>

这样查询到的日期结果就会显示字符串 'add_time': '2020-06-22 22:34:14'

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:上海悠悠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python接口自动化13-data和json参数傻傻分不清

    前言 在发post请求的时候,有时候body部分要传data参数,有时候body部分又要传json参数,那么问题来了:到底什么时候该传json,什么时候该传da...

    上海-悠悠
  • python笔记7-多线程threading

    前言 1.python环境2.7 2.threading模块系统自带 一、 单线程 1.平常写的代码都是按顺序挨个执行的,就好比吃火锅和哼小曲这两个行为事件,定...

    上海-悠悠
  • python笔记14-读取yaml配置文件

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言。yaml 是专门用来写配置文件的语言,...

    上海-悠悠
  • 学会不一样的Loading图

    上述效果,其实很多app就单纯这样使用了,但是我们为了更美化,决定为其增加动态效果

    Dwyane
  • 实时获取Python的print输出流

    我的应用场景是:使用shell执行python文件,并且通过调用的返回值获取python的标准输出流。 shell程序如下:

    py3study
  • 第八节 Go语言条件语句

    干货来了!!!为了让更多的小伙伴喜欢Golang、加入Golang之中来,Golang语言社区发起人彬哥联合业界大牛共同推出了Go语言基础、进阶、提高课程,目前...

    李海彬
  • [日常] Go语言圣经-函数递归习题

    练习 5.1: 修改findlinks代码中遍历n.FirstChild链表的部分,将循环调用visit,改成递归调用。

    陶士涵
  • 广告小程序后端开发(10.增加用户积分)

    玩蛇的胖纸
  • 15.Django基础十一之认证系统

      我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情...

    changxin7
  • AI一分钟|清华紫光斥资26亿美元收购Linxens;李小光任京东无人机首席科学家,负责无人机规划与研发

    据路透社援引知情人士消息,清华紫光在洽谈收购法国智能芯片组件制造商 Linxens,并且双方已经在一个月前签署了约 22 亿欧元的合同协议,但是尚未公布。去年年...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券