- 增加超时时间
在程序连接MySQL数据库时加上具体的超时时间,例如:
import mysql.connector
config = {
'host': '127.0.0.1',
'port': '3306',
'user': 'root',
'password': '',
'database': 'test',
'charset': 'utf8',
'connection_timeout': 60 # 增加连接超时时间
}
db = mysql.connector.connect(**config)
- 分批处理数据
如果处理数据集较大,可以考虑将数据分批查询处理,避免一次性查询超时或者内存不足导致的错误。
import mysql.connector
config = {
'host': '127.0.0.1',
'port': '3306',
'user': 'root',
'password': '',
'database': 'test',
'charset': 'utf8'
}
# 每次查询取500条数据
LIMIT = 500
OFFSET = 0
while True:
sql = f'SELECT * FROM table LIMIT {OFFSET}, {LIMIT}'
cursor = db.cursor()
cursor.execute(sql)
results = cursor.fetchall()
# 处理数据...
if len(results) < LIMIT:
break # 查询完毕
OFFSET += LIMIT
- 使用连接池
使用连接池可以有效地减少创建和断开MySQL连接所花费的时间和资源,提高程序的性能。在Python中,可以使用第三方库
pymysql
,示例代码如下:
import pymysql
from DBUtils.PooledDB import PooledDB
pool = PooledDB(
creator=pymysql,
mincached=5,
maxcached=20,
host='127.0.0.1',
port=3306,
user='root',
password='',
database='test',
charset='utf8'
)
connection = pool.connection()