Python执行MySQL报错重试
执行MySQL的SQL语句报错后,如何自动重试?
方法一:使用重试模块:tenacity
import pymysql from tenacity import retry, stop_after_attempt, wait_fixed @retry(stop=stop_after_attempt(10), wait=wait_fixed(10)) def execute_mysql(host, user, password, database, query):
connection = None try: connection = pymysql.connect(host=host, user=user, password=password, db=database, charset='utf8mb4') with connection.cursor() as cursor: cursor.execute(query) # 获取查询结果 rows = cursor.fetchall() for row in rows: print(row) except pymysql.MySQLError as e: print(f"MySQL error: {e}") raise finally:
if connection: connection.close() # 使用示例 execute_mysql( host='localhost', user='root', password='Root@1234', database='test', query="SELECT * FROM test limit 10" )
方法二:自定义重试代码
import pymysql import time def execute_mysql(host, user, password, database, query): # 设置重试次数 max_retries = 5 # 当前重试次数 current_retry = 0 # 重试间隔时间(秒) retry_interval = 60
# 数据库连接
connection = None # 执行SQL并进行重试 while current_retry < max_retries: try: # 执行SQL connection = pymysql.connect(host=host, user=user, password=password, db=database, charset='utf8mb4') with connection.cursor() as cursor: cursor.execute(query) # 获取查询结果 rows = cursor.fetchall() for row in rows: print(row) # 如果没有异常,退出循环 break except Exception as e: # 打印异常信息 print(f'执行SQL时发生错误,正在尝试重试:{e}') # 更新重试次数 current_retry += 1 if current_retry < max_retries: # 等待一段时间后重试 print(f'等待{retry_interval}秒后重试...') time.sleep(retry_interval) print("~~~"*50) else: # 如果重试次数用完,则抛出异常 raise e finally:
if connection: connection.close() # 使用示例 execute_mysql( host='localhost', user='root', password='Root@1234', database='test', query="SELECT * FROM test limit 10" )
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/18167273
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?