mysql 查询出的日期格式 datetime.datetime (2018, 7, 22, 0, 0), 如何转换为 Python str 格式

本贴最后更新于 1534 天前,其中的信息可能已经东海扬尘

问题源于:有很多不同的接口(里面有各自不同的日期字段)需要与数据库里查询出的结果做断言校验,预期结果是从Excel中读取的字符串类型数据,未做任何处理前数据库查询出来的结果如下图所示:
image.png

断言要把预期结果转为字典后再与数据库查询出的结果做校验,这样就出现{'ex_asn_num': 'ASN201807240007', 'production_time': datetime.datetime(2018, 7, 22, 0, 0), 'excl_tax_price': Decimal('35.00')}里的datetime.datetime(2018, 7, 22, 0, 0)和Decimal('35.00')无法转换为字典做断言。
关于这种日期格式datetime.datetime(2018, 7, 22, 0, 0)的解决方法:

方法一:
直接数据库查询语句去转换为“2018-7-22 00:00”,

语句如下:

SELECT a.ex_asn_num,b.excl_tax_price,DATE_FORMAT(b.production_time,"%Y-%m-%d %H:%i:%s") 
as production_time FROM ssm_wm_asn_record as a,ssm_wm_asn_record_lot as b  
WHERE a.ex_asn_num=b.ex_asn_num and b.id="1021586057936064515"

结果如下:
image.png

方法二:

在python里转换,代码如下:

    def get_one(self, cursor):
        value = cursor.fetchone()
        for key in value:
            if isinstance(value[key], (datetime, date)):
                value[key] = value[key].strftime("%Y-%m-%d %H:%M:%S")
            elif isinstance(value[key], Decimal):
                value[key] = str(value[key])
        return value

结果如下:

image.png

2 回帖
请输入回帖内容 ...
  • huahua
  • huahua

    👏 👏 👏 优秀的小素