错误提示如下:
File "D:\ProgramData\Anaconda3\lib\site-packages\pymysql\connections.py", line 738, in _read_bytes
raise err.OperationalError(
OperationalError: (2013, 'Lost connection to MySQL server during query ([WinError 10053] 您的主机中的软件中止了一个已建立的连接。)')
代码如下:
import pandas as pd
import numpy as np
#准备数据框
data1=pd.DataFrame({"x":list(range(100000000))})
data0=pd.DataFrame({"x":list(range(10))})
from sqlalchemy import create_engine
connection1=create_engine("mysql+pymysql://root:12345@localhost:3306/test1?charset=utf8")
import sqlalchemy
#create_engine的用法可以用help(sqlalchemy.engine)看下。
pd.io.sql.to_sql(data1,"biao3",connection1,schema="test1",if_exists="replace")
pd.io.sql.to_sql(data0,"biao0",connection1,schema="test1",if_exists="replace")
原因:这是因为我们导入的数据量太大导致的
即使是mysql自己往自己的库里面插数据,一次性插入太多数据也会出现这个问题。
因此这个问题应该算是Mysql自己的一个问题。
【
这里借用一下我搜索到的别人反馈的信息:
在执行脚本插入操作的时候, 报了一个 mysql 连接断开的错误, 报错信息为 pymysql.err.OperationalError: (2013, ‘Lost connection to MySQL server during query’), 原因是同时操作了太大的数据, 比如我就用 cursor.execute(sql) 执行了上千条插入语句, 然后再commit 一次, 这样同时数据量过大, 就会造成mysql连接断开, 但是数据还是会插进入, 不过有可能会丢数据;
解决方案:
加一个全局变量计数器, 然后在执行语句达到一定数量后再commint 一次, 这个数据可以根据mysql的性能来设置, 我这边设置成100之后就没问题了 (别忘了commit之后把计数器变量清零)】
我们的这个问题这里,也可以参考这种解决方案,具体来说就分批导入。一部分一部分的导入。
试了下1000万 1千万是可以的。
再试下两千万
2000 0000很长时间都没跑完








暂无数据