pymysql.err.OperationalError: (2006, "MySQL server has gone away (TimeoutError(110, 'Connection timed out'))")
pymysql.err.OperationalError: (2006, "MySQL server has gone away (TimeoutError(110, 'Connection timed out'))")
我的问题是如果遇到任何错误,请重新连接到 MySQL 服务器。
我正在连接到 Flask 中的 MySQL 服务器:
connection = pymysql.connect(host='host',
user='user',
connect_timeout= 31536000,
password='passwd',
db='db_name',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
以及使用游标的查询:
Flask 路由代码:
@app.route("/chart", methods=['GET', 'POST'])
def chart():
try:
with connection.cursor() as cursor:
#line chart open tickets
query = "select createdDate,rootCause,requestId from db_name;"
df = pd.read_sql(query, connection)
print(df)
except pymysql.MySQLError as e:
print(e)
我想在出现错误时重新连接到数据库:
pymysql.err.OperationalError: (2006, "MySQL server has gone away (TimeoutError(110, 'Connection timed out'))")
请帮我找到这个错误的解决方案。
遇到任何错误如何重新连接到数据库。
提前致谢!
看起来您一直在使用单一连接。尝试每次都创建一个新连接,并在所需查询达到 运行 后关闭它。
通过这个可以避免这个问题。
在调用 create_engine()
时设置 pool_pre_ping=True
似乎对我的情况有很大帮助。
示例:
engine = create_engine(db_connection, pool_pre_ping=True)
来自 pool_pre_ping
上的 SQLAlchemy docs:
“如果为 True,将启用连接池“预 ping”功能,该功能会在每次结帐时测试连接的活动性。”
我的问题是如果遇到任何错误,请重新连接到 MySQL 服务器。
我正在连接到 Flask 中的 MySQL 服务器:
connection = pymysql.connect(host='host',
user='user',
connect_timeout= 31536000,
password='passwd',
db='db_name',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
以及使用游标的查询: Flask 路由代码:
@app.route("/chart", methods=['GET', 'POST'])
def chart():
try:
with connection.cursor() as cursor:
#line chart open tickets
query = "select createdDate,rootCause,requestId from db_name;"
df = pd.read_sql(query, connection)
print(df)
except pymysql.MySQLError as e:
print(e)
我想在出现错误时重新连接到数据库:
pymysql.err.OperationalError: (2006, "MySQL server has gone away (TimeoutError(110, 'Connection timed out'))")
请帮我找到这个错误的解决方案。
遇到任何错误如何重新连接到数据库。
提前致谢!
看起来您一直在使用单一连接。尝试每次都创建一个新连接,并在所需查询达到 运行 后关闭它。 通过这个可以避免这个问题。
在调用 create_engine()
时设置 pool_pre_ping=True
似乎对我的情况有很大帮助。
示例:
engine = create_engine(db_connection, pool_pre_ping=True)
来自 pool_pre_ping
上的 SQLAlchemy docs:
“如果为 True,将启用连接池“预 ping”功能,该功能会在每次结帐时测试连接的活动性。”