How to set a DB connection timeout for a python/pyodbc/unixODBC/MS ODBC Driver 11 for SQL Server/Linux stack?
我一直找不到一个文档化的方法来设置实际工作的初始连接的超时。我不是在问"查询超时",而是在DB服务器完全关闭或无法访问并且根本没有响应的情况下,初始连接尝试的超时。默认情况下,这样的连接在255秒后会超时-有没有方法设置一个较短的超时?
编辑:为了清楚起见,我应该在这里重申一下堆栈:
- Python
- 脓毒症
- unixodc(非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.
1 2 3 4 | 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秒内没有返回结果。但它返回结果的速度比没有设置超时要快得多。