gpt4 book ai didi

python - 如何为 SQL Server/Linux 堆栈的 python/pyodbc/unixODBC/MS ODBC 驱动程序 11 设置数据库连接超时?

转载 作者:太空狗 更新时间:2023-10-29 11:19:31 27 4
gpt4 key购买 nike

我一直无法找到记录的方法来为实际有效的初始连接设置超时。我不是在询问“查询超时”,而是在数据库服务器完全关闭或无法访问且根本没有响应的情况下初始连接尝试超时。默认情况下,此类连接似乎会在 255 秒后超时 - 是否可以设置更短的超时时间?

编辑:为了清楚起见,我应该在这里重申堆栈:

  • python
  • pyodbc
  • unixODBC(不是 iODBC)
  • 用于 SQL Server 的 MS ODBC 驱动程序 11(非 FreeTDS)
  • Linux

最佳答案

https://stackoverflow.com/a/12946908/1552953

这个答案是指能够在连接上设置超时:

Timeout

An optional integer query timeout, in seconds. Use zero, the default, to disable.

The timeout is applied to all cursors created by the connection, so it cannot be changed for a given connection.

If a query timeout occurs, the database should raise an OperationalError with SQLSTATE HYT00 or HYT01.

Note: This attribute only affects queries. To set the timeout for the actual connection process, use the timeout keyword of the pyodbc.connect function.

result = None
with pyodbc.connect('DRIVER={SQL Server};SERVER=mydb;DATABASE=solarwinds;Trusted_Connection=True', timeout=1) as cnxn:
cursor = cnxn.cursor()
result = cursor.execute(query).fetchall()

所以使用上面的代码并没有在1秒内超时,或者至少在1秒内没有返回结果。但它返回结果的速度确实比没有设置超时快得多。

关于python - 如何为 SQL Server/Linux 堆栈的 python/pyodbc/unixODBC/MS ODBC 驱动程序 11 设置数据库连接超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18774102/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com