Python mysql.connector超时

本文探讨如何在Python中使用mysql.connector模块时,针对.connect()和.execute()函数分别设置超时。作为数据库管理员,作者希望针对特定MySQL用户而非所有用户调整超时。文档中提到的connect-timeout参数仅适用于初始连接,而执行查询的超时设置成为疑问。从MySQL 5.7.8开始,可以为每个会话设置SELECT语句的执行时间限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是使用mysql.connector模块与MySQL数据库的简单连接。

db = mysql.connector.connect(
    host=DB_SERVER,
    port=DB_PORT,
    user=DB_UNAME,
    passwd=DB_PASSWORD,
    db=DB_NAME)
db.connect()
mysqlCursor.execute(query)

我想控制两个不同的超时。首先,我希望它在.connect()函数上花费的时间不超过五秒钟。我已经知道了。其次,我希望它在.execute()函数上花费的时间不超过一秒钟。我怎样才能做到这一点?

我是数据库管理员,因此我可以根据需要为此做些事情。不过,我只希望为一个特定的MySQL用户更改超时,而不是为每个用户更改超时,这就是为什么我从Python方面开始。

到目前为止,这是我发现的内容:

mysql.connecter 的文档列出了几个超时参数。Connect-timeout将设置初始连接的超时,但是据我所知,它不会设置查询超时。如果没有活动,交互式超时将导致超时,但是我不认为这意味着如果查询执行时间过长,它将超时。

connect-timeout = seconds 连接超时(以秒为单位)。在Linux上,此超时也用于等待服务器的第一个答案。(超时已由connect-timeout代替,但MySQL 5.0仍支持超时以实现向后兼容性。)

Interactive-Timeout = seconds 允许在关闭连接之前不活动的秒数。客户端的会话wait_timeout变量设置为会话Interactive_timeout变量的值。

解决方案

从MySQL 5.7.8 开始,可以为每个会话设置仅SELECT语句的最大执行时间。连接后立即设置:

db = mysql.connector.connect(...)
cursor = db.cursor()
# Limit SELECTs to 1 second
cursor.execute("SET SESSION MAX_EXECUTION_TIME=1000")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值