0
点赞
收藏
分享

微信扫一扫

Python采用并发查询mysql以及调用API灌数据 (六)- 解决datetime序列化json格式问题...

624c95384278 2022-07-12 阅读 76

Python采用并发查询mysql以及调用API灌数据 (六)- 解决datetime序列化json格式问题..._json


前情回顾

上一篇文章已经编写了mysql查询以及生成请求api的body数据,那么本章节我们来继续编写解决body序列化json过程中的datetime转化问题。

实战任务

本次因为服务架构重构,表优化、重构,带来的任务就是需要从原来的mysql数据库中,读取原表数据(部分存在多张关联查询)然后通过调用API的服务方式灌入新的数据库表中(包含mysql、mongodb)。

执行流程如下


Python采用并发查询mysql以及调用API灌数据 (六)- 解决datetime序列化json格式问题..._json_02


那么根据流程所需要的功能,需要以下的实例进行支撑:
1.并发实例
2.查询数据实例
3.执行post请求实例

目标:解决datetime序列化json问题

问题现象


Python采用并发查询mysql以及调用API灌数据 (六)- 解决datetime序列化json格式问题..._数据_03


TypeError: datetime.datetime(2018, 11, 27, 16, 0, 21) is not JSON serializable

解决方法

import datetime

## 转化datetime类型为str类型
print type(api_body["lastModifyTime"].strftime("%Y-%m-%d %H:%M:%S"))

## 判断是否datetime类型
if isinstance(api_body["lastModifyTime"],datetime.datetime):
print "datetime类型"

if isinstance(api_body["userId"],datetime.datetime):
print "datetime类型"
else:
print "不是datetime类型"

只要有了上面的两个方法,就可以在body循环的过程中转化datetime格式为string类型了。

执行效果如下:

<type 'str'>
datetime类型
不是datetime类型

编写model增加body序列化为json格式的方法


Python采用并发查询mysql以及调用API灌数据 (六)- 解决datetime序列化json格式问题..._数据_04


首先将datetime类型的数据转化为str类型,然后直接调用json转格式即可。

# 根据查询的结果以及字段字典,转化为请求API的body
def convertApiBody(self,result,dict_fields):
# 循环生成每条查询数据的请求body
body = {}
for result in result:
for field in result:
if field == "null":
body[field] = None
else:
body[field] = result[field]
# 更新body的字段为新表的字段
new_body = {}
for key, value in dict_fields.items():
# print "key = %s , value = %s" % (key, value)
if key == "null":
new_body[value] = None
elif isinstance(body[key],datetime.datetime): # 将datetime类型转str,解决json的序列化问题
new_body[value] = body[key].strftime("%Y-%m-%d %H:%M:%S")
else:
new_body[value] = body[key]
return new_body

调用执行一个post请求看看:




Python采用并发查询mysql以及调用API灌数据 (六)- 解决datetime序列化json格式问题..._json_05


好了,插入成功了。

在这上面的过程,只插入了一条数据,真正的场景中是需要循环插入数据的,那么把执行post请求的方法进行循环执行。

下一个篇章,来看看循环执行以及如何并发处理请求。


Python采用并发查询mysql以及调用API灌数据 (六)- 解决datetime序列化json格式问题..._json_06




举报

相关推荐

0 条评论