记一次DataFrame.to_sql()时出现 system error: 10053 你的主机中的软件中止了一个已建立的连接的错误

记一次DataFrame.to_sql()时出现错误system error: 10053

错误描述

我想使用python将DataFrame保存为mysql的一张表,在用pandas的to_sql()方法存入mysql时,出现了如下错误:

sqlalchemy.exc.OperationalError: (mysql.connector.errors.OperationalError) 2055: Lost connection to MySQL server at '192.xxx.xx.xxx:3306', system error: 10053 你的主机中的软件中止了一个已建立的连接。 

我使用的是python3.6,用了sqlalchemy和mysql-connector-python这两个库,代码如下:

import pandas as pd
from sqlalchemy import create_engine
from mysql import connector

# write to mysql
engine = create_engine("mysql+mysqlconnector://root:root@192.xxx.xx.xxx:3306/wyx?charset=utf8")
data.to_sql(table, engine, schema='wyx', if_exists='append', index=True, index_label='index')

分析

data是一个14万行的DataFrame,发生这个错误的原因就是我的data数据量太大了,经过尝试数据量超过38000行时就会报这个错误,少数据量时正常不会报错。至于底深层次的原因到底是不是这个就等大神来分析一下吧。

解决

由于我是使用mysql-connector-python这个库连接mysql的,在代码中就是mysql+mysqlconnector这部分,后来我换成了用pymysql连接就正常了,代码如下:

engine = create_engine("mysql+pymysql://root:root@192.xxx.xx.xxx:3306/wyx?charset=utf8")

看出来区别了么,换成mysql+pymysql就可以了。
当然前提是你要安装了pymysql库才行哦,代码中记得引入pymysql。

One More Thing

换成用pymysql后又出现了这个警告:

D:\Program Files\Anaconda3\lib\site-packages\pymysql\cursors.py:170: Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 480")
  result = self._query(query)

在网上查了大部分说这个是mysql 5.7的一个bug,但是用mysql+mysqlconnector就不会出现这个警告,这个警告至今我未解决,后面解决了会更新。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值