首页 > 解决方案 > Python pydobc 到 SQL Server 连接中的连接尝试失败

问题描述

我有 python 代码将大量 CSV 数据上传到 SQL Server。由于我不明白的原因,代码继续失败。它抛出错误pyodbc.OperationalError。我通过(手动)重新启动并查找最后上传的记录并从那里继续上传来临时修复,但这真的很糟糕。

这是错误消息:

('08S01', '[08S01] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: 连接尝试失败,因为连接方在一段时间后没有正确响应,或建立连接失败,因为连接主机失败响应。\r\n (10060) (SQLExecDirectW); [08S01] [Microsoft][ODBC Driver 17 for SQL Server]通信链路故障 (10060)')

我尝试在中设置超时变量connect()

conn = pyodbc.connect(
    r'DRIVER={ODBC Driver 17 for SQL Server};SERVER=' + server_name + '; \
    Database=' + db_name + ';Trusted_Connection=yes;DATABASE=', timeout=5, autocommit=True)

问题是我不明白这个错误。它已经建立了联系。它进行了很多查询来上传数据。但是突然连接断开了?

我该如何解决?

附录:我添加了代码来捕获错误,然后重试调用正在将数据写入表的存储过程。我让它等待 30 秒(我尝试了 5、10,现在最多 30),然后尝试再次调用 SQL。它在调用执行 sql 时继续失败:

return_key = cursor.execute(sql_str, values).fetchval()

我想也许如果我只是等待并重试调用存储过程,它会起作用。但没有这样的运气。

标签: sql-serverconnectiontimeoutpyodbc

解决方案


推荐阅读