【发布时间】:2012-10-28 19:21:18
【问题描述】:
我目前正在运行一个脚本,使用 execute many 函数将值(元组列表)插入 MySQL 数据库。当我使用少量行(`1000)时,脚本运行良好。
当我使用大约 40,000 行时,我收到以下错误:
cursor.executemany( stmt, trans_frame)
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\IPython\core\interactiveshell.py", line 2538, in run_code
exec code_obj in self.user_global_ns, self.user_ns
File "<ipython-input-1-66b44e71cf5a>", line 1, in <module>
cursor.executemany( stmt, trans_frame)
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 253, in executemany
r = self._query('\n'.join([query[:p], ',\n'.join(q), query[e:]]))
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 346, in _query
rowcount = self._do_query(q)
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 310, in _do_query
db.query(q)
OperationalError: (2006, 'MySQL server has gone away')
有什么建议吗?
【问题讨论】:
-
查看mysql服务器的错误日志
-
你读过this的答案吗?这可能会有所帮助。
-
这看起来是个问题。我对 python 比较陌生,不知道如何在 python (max_allowed_packet) 中调整该参数。有什么建议?非常感谢!!
-
实际上我发现了 my.cnf 文件...不确定我是否会弄乱它。可能只使用 execute() 和一个慢得多的循环
标签: python mysql executemany