pymysql寫不進去問題

Pizza
Pizza’s
Published in
3 min readMar 28, 2020

1. 成功範例

import pymysql
# 連接 DB
#db = pymysql.connect("localhost","root","Aa-12345","test2" )
db2 = pymysql.connect("192.168.0.129","root","xxxx","BxxxxxP" )
cursor2 = db2.cursor()
db2.ping(reconnect=True)sql = ("INSERT INTO `AP_DRCalendar` (`ID`,`TimeID`,`DRUserID`,`Date`,`StartTime`,`EndTime`,`ServiceType`,`Stage`,`ChangeID`,`LeaveID`,`Note`,`ModifyDate`,`Modifier`,`CreateDate`,`Creater`,`Status`) VALUES (uuid(),'{}','{}','{}','{}','{}',{},{},{},{},'{}','{}','{}','{}','{}',{})").format("00FCBB29-B349-41AC-8C51-F20FD6552811","9A593006-F3A8-450F-B870-657483A46D50","2020-12-15","12:30:00","13:00:00",1,1,"NULL","NULL","","2019-12-28 12:19","xxxxx","2019-12-6 14:19","xxxxx",1)
print("\n")
print(sql)
cursor2.execute(sql)db2.commit()
res2 = cursor2.fetchall()
print("\n")
print(res2)
#db2.close()

2. 原因

背景

在使用手机模拟器抓取数据时,通过mitmproxy进行返回数据的解析存储。 因为不清楚mitmproxy在设置脚本后是一次开启还是每次请求都会运行一次,所以在脚本里直接开启了数据库连接并没有关闭。 写好脚本后,在爬取过程中,时间过久后会报错pymysql.err.InterfaceError: (0, ”) 在response方法里关闭数据库也没有什么用,甚至存不进数据库。

解决

在每次运行sql之前,ping一次,如果连接断开就重连。

db.ping(reconnect=True) cur.execute(sql) db.commit() — — — — — — — — — — — — — — — — 版权声明:本文为CSDN博主「dayday_baday」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/okm6666/article/details/80618767

--

--