Python 数据库连接
在Python中,能不能在下面的代码里添加连接超时的设置?如果可以的话,请帮帮我。
connectionString = "Provider=SQLOLEDB.1;Data Source="+options.server+";Initial Catalog="+options.database+";Integrated Security=SSPI"
Connection = win32com.client.Dispatch('ADODB.Recordset')
Connection.ActiveConnection = connectionString
Connection.ActiveConnection.CommandTimeout = 3600
2 个回答
0
我觉得你需要主动创建(并打开)连接:
conn = win32com.client.Dispatch('ADODB.Connection')
conn.CommandTimeout = 3600
conn.Open(connection_string)
然后你就可以做一些事情,比如:
rs = win32com.client.Dispatch('ADODB.RecordSet')
rs.Open(qry, conn)
(我想你也可以设置记录集的 ActiveConnection
和 CommandText
等等,然后执行,但我一直觉得 Open()
是更简单的方法,而且我的API知识说实话有点生疏……)
就我个人而言,我觉得使用一个遵循标准Python db api 的模块更简单,比如adodbapi(这个模块和你已经在用的pywin32一起提供),它也使用COM API,但在“后台”处理这些事情,或者你可以用pyodbc。
使用adodbapi的例子:
conn = adodbapi.connect(conn_string, timeout=3600)
cur = conn.cursor()
cur.execute(qry)
最后一个小建议:看看sqlalchemy,它让事情变得更简单(即使你不使用像ORM这样的其他功能)
1
在这里可以阅读一个通用的例子:http://programming-guides.com/python/timeout-a-function