报错信息
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
_mysql_exceptions.OperationalError: (2013, 'Lost connection to MySQL server during query')
脚本可能需要跑几天才可以将数据收集完全,这样的情况出现是会非常多
解决办法
# -*- coding: utf-8 -*
import os, re
import MySQLdb
conn = cursor = None
dbname = 'test'
retry = 0
def cursor_execute(sql, param=()):
global retry
try:
return cursor.execute(sql, param)
except (AttributeError, MySQLdb.OperationalError) as e:
retry += 1
if retry > 7:
raise e
else:
print('Try Connect %s ' % retry)
re_connect()
return cursor_execute(sql, param)
def re_connect():
global conn, cursor
DB_CONNECT = {
'user': 'root',
'passwd': '123456',
'host': '127.0.0.1',
'charset': 'utf8',
'port': 3306,
'use_unicode': True,
}
conn = MySQLdb.connect(**DB_CONNECT)
conn.autocommit(True)
cursor = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
if not cursor_execute("SHOW DATABASES LIKE '%s' " % (dbname,)):
cursor_execute("CREATE DATABASE IF NOT EXISTS " + dbname)
cursor_execute("USE " + dbname)
测试
def now():
cursor_execute("select now() as now")
return cursor.fetchone()['now']
while True:
print(now())
time.sleep(5)
author coconets@163.com