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

本文介绍了在Python中并发查询MySQL数据库,处理datetime类型数据并将其序列化为JSON格式的问题。在执行过程中遇到datetime对象无法直接转换为JSON的错误,通过检查数据类型并转化为str类型,解决了序列化问题,成功执行POST请求并将数据插入新数据库。
摘要由CSDN通过智能技术生成

d52a2edc451025c2de8c19f03fc1b1fd.gif

fc2038d0a529382055c5c7576e343dd0.png

前情回顾

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

实战任务

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

执行流程如下

4be90ea4dfedc50ec41b50521006c2f8.png

那么根据流程所需要的功能,需要以下的实例进行支撑:

1.并发实例

2.查询数据实例

3.执行post请求实例

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

问题现象

f39f888668e19efb183d4b2d98b3adb2.png

2018, 11, 27, 16, 0, 21) is not JSON serializable

解决方法

## 转化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'>

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

ddc5c129b550d17d295faef990b95ad0.png

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

# 根据查询的结果以及字段字典,转化为请求API的body

def convertApiBody(self,result,dict_fields):

# 循环生成每条查询数据的请求body

for result in result:

for field in result:

if field == "null":

None

else:

# 更新body的字段为新表的字段

for key, value in dict_fields.items():

# print "key = %s , value = %s" % (key, value)

if key == "null":

None

elif isinstance(body[key],datetime.datetime): # 将datetime类型转str,解决json的序列化问题

"%Y-%m-%d %H:%M:%S")

else:

return new_body

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

179ea39a0cb63ec069f14ec2735fa0ab.png

好了,插入成功了。

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

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

104131425a435c802d0df18ce5a43d08.png

e3f3381130a048d2ea0260c2420980a1.gif

如果您觉得不错,请别忘了转发、分享、点赞让更多的人去学习, 您的举手之劳,就是对小编最好的支持,非常感谢!

f481a601c3d1b50f09b304035be33f7d.gif小编有话说

宁愿跑起来被拌倒无数次,也不愿规规矩矩走一辈子。就算跌倒也要豪迈的笑。

目前10000+人已关注加入我们

b4490e2c5ff2ae50b7761987cfff01c3.gif

66c3c26cef797fa420b6a6cd823cf69e.gif

70384155be6caee428c92bcb627d49f3.gif

81129589eb970e6cd85609318fca08b3.gif

cc420a03324f2b43be7adfe7d191c6eb.gif

4da39b45b46bd283d0f84449a91d5cc2.gif

bf7452dcf311037c3d701ab8f3f3bc91.gif

548eb3df5733a8690fd59b23bcec8123.gif

e875bbd0fd9f7ba0e3166ed21e536e40.gif

1f67e6e0eaf2eb89da1d706722168f9a.gif

ca97e0799b73a816ac80b81f083da333.gif

317dd99797860c88fad0097ecd5448ab.gif

ad5ff92a82be736fb4f9706e5c53a174.gif

e2f612ac6db3e82875141a8161cf5a80.gif

b7093a48d3ca83de09a52ef5b0bfecf6.gif

cc420a03324f2b43be7adfe7d191c6eb.gif

关注公众号回复【资料】即可获得python、php、java、前端等视频资源

d63f9cbc312f98d86a57ced51ee87b80.png

cecec2b0912036482f1bcec233460ace.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值