繁体   English   中英

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

[英]How to set a DB connection timeout for a python/pyodbc/unixODBC/MS ODBC Driver 11 for SQL Server/Linux stack?

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

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

  • Python<\/li>
  • pyodbc<\/li>
  • unixODBC(不是 iODBC)<\/li>
  • 适用于 SQL Server(非 FreeTDS)的 MS ODBC 驱动程序 11<\/li>
  • Linux<\/li><\/ul>"

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

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

暂停

可选的整数查询超时,以秒为单位。 使用零(默认值)禁用。

超时应用于连接创建的所有游标,因此无法更改给定连接。

如果发生查询超时,则数据库应使用SQLSTATE HYT00或HYT01引发OperationalError。

注意:此属性仅影响查询。 要设置实际连接过程的超时,请使用pyodbc.connect函数的timeout关键字。

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秒内没有返回结果。 但它确实比没有超时设置更快地返回结果。

在这里解决。 https://stackoverflow.com/a/35640876/2906290

我已经确认它适用于带有 MS SQL Server 的 pyodbc: https ://docs.sqlalchemy.org/en/14/core/engines.html#use-the-connect-args-dictionary-parameter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM