首页 > 解决方案 > 无法从 python 执行两个 SQL 表的内连接,出现通信链接错误/连接写入错误

问题描述

我正在将我的模型结果部署到数据库中。我已经使用 pyodbc 连接从 SQL 读取数据。在 python 中运行 ML 模型并预测结果“ColA、ColB、ColC”。主表已经有这些值为 NULL 的列。

主表:

|Number| ColA   | ColB   | ColC |
|:---- |:------:| :-----:|-----:|
| 123  |  NULL  | NULL   |NULL  |
| 456  | NULL   | NUL    |NULL  |

模型运行后,我已将预测值保存在临时表中。

温度表:

|Number| ColA   | ColB   | ColC  |
|:---- |:------:| :-----:|-----: |
| 123  | India  |2-Jan-21|10:00AM|
| 456  | USA    |2-Jan-21|12:00AM|

现在我需要根据 Number 更新主表中 'ColA, ColB, ColC' 的值。

我尝试了以下查询:

statement = '''
UPDATE Maintable
SET
     ColA= u.ColA,  
     ColB= u.ColB,
     ColC= u.ColC,
FROM Maintable AS t
INNER JOIN Temptable u ON t.Number=u.Number;
'''

这给出了以下错误:

OperationalError: ('08S01', '[08S01] [Microsoft][ODBC SQL Server Driver]通信链路故障 (0) (SQLExecDirectW)')

有时会出现这个错误:

错误: ('01000', '[01000] [Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionWrite (send()). (10054) (SQLExecDirectW); [01000] [Microsoft][ODBC SQL Server Driver] [共享内存]一般网络错误。检查您的网络文档。(11)')

如果它成功运行而没有错误,当我从 Maintable 中选择 * 时,作业运行时间很长并且无法查看表。不得不强行杀死工作。

如何克服这个错误?有没有其他方法可以从 python 更新 SQL 数据?

标签: pythonsql

解决方案


推荐阅读