【发布时间】:2019-06-27 08:52:41
【问题描述】:
我正在尝试通过在我的服务器上本地计算的 pandas 数据帧和使用 pyodbc 的远程服务器中的 SQL 表之间的内部连接来更新 SQL 表,但我似乎无法匹配键在数据框/表之间。
我的第一种方法是创建一个简单的查询,在其中更新我需要的 3 列,使用数据帧中的列和 SQL 表中的列之间的内连接。但是很可惜,它没有用,因为我受到了
的欢迎pydobc 中使用的查询是:
'UPDATE table1
SET table1.col1 = ' + df[col1] + ', ' +
'table1.col2 = ' + df[col2] + ', ' +
'table1.col3 = ' + df[col3] +
' FROM table1 ' +
' inner join ' + df[key_col] + ' on ' + df[key_col] + '= table1.key_col'
返回错误:
TypeError: The first argument to execute must be a string or unicode query.
我的第二种方法是使用循环并遍历数据帧的每一行,在数据帧和 SQL 表之间连续匹配:
SET table1.col1 = df[col1],
table1.col2 = df[col2],
table1.col3 = df[col3]
FROM table1
WHERE table1.key_col = df[key_col]
但是,由于数据框的大小,匹配它们之间的所有行最多需要一个小时。
我的预期结果是更新了表 1 中的三列,但实际上并没有更新。
我当前的解决方案是使用我需要的列和键在 SQL 中创建新表,然后使用另一个查询,在两个 SQL 表之间进行内部连接,但这是一个临时解决方案。
这可以用pyodbc完成吗?我查看了文档,找不到任何有用的信息。
【问题讨论】: