MS SQL + Python(IronPython)超时

2 投票
1 回答
1008 浏览
提问于 2025-04-16 00:09

我正在用Python查询MS SQL,使用的代码来自这个网站:http://www.ironpython.info/index.php/Accessing_SQL_Server

import clr
clr.AddReference('System.Data')
from System.Data import *

TheConnection = SqlClient.SqlConnection
("server=yourserver;database=News;uid=sa;password=password;timeout=0")
TheConnection.Open()

MyAction = SqlClient.SqlCommand("Select Headline from News", TheConnection)
MyReader = MyAction.ExecuteReader()

while MyReader.Read():
    print MyReader[0]

MyReader.Close()
TheConnection.Close()

我刚加了timeout=0,但还是遇到了:

EnvironmentError: System.Data.SqlClient.SqlException (0x80131904): Timeout 
expired.  The timeout period elapsed prior to completion of the operation 
or the server is not responding.

我试着把timeout设置成1000000,但还是出现了同样的错误。

如果我在同一台机器上用MSSQL客户端运行相同的SQL语句,那就完全没问题。你知道怎么避免这个超时的错误吗?

1 个回答

1

试着增加SqlCommand中的CommandTimeout属性,具体可以参考这里的说明:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout(v=vs.110).aspx

连接字符串中的超时值只控制与数据库初始连接的超时时间。如果你的SQL查询执行时间很长,这个设置就没什么用,所以你需要使用CommandTimeout来解决这个问题。

撰写回答