首页 > 解决方案 > SQL Server 的 Python 脚本 - 使用 MERGE 更新值

问题描述

我有这个插入 SQL 数据库的 python 函数。该脚本是这样的,每次重新运行时,除了新行之外,它还必须再次插入同一行。最终我会改变它,使它只插入新行,但现在我必须使用某种更新语句。

我知道我可以MERGE在 SQL Server 中使用来实现类似于 MySQL 的功能ON DUPLICATE KEY UPDATE,但我不确定应该如何使用它。欢迎任何建议。谢谢!

def sqlInsrt(headers, values):
    #create string input of mylisth
    strheaders = ','.join(str(i) for i in headers)

    #create string ? param's for INSERT clause
    placestr = ','.join(i for i in ["?" for i in headers])

    #create string ? param's for UPDATE clause
    replacestr = ', '.join(['{}=?'.format(h) for h in headers])

    #Setup and execute SQL query 
    insert = ("INSERT INTO "+part+" ("+strheaders+") VALUES ("+placestr+")")
    cursor.execute(insert, values)
    cnx.commit()

标签: pythonsqlsql-merge

解决方案


您应该阅读 Merge 的文档。基本上 MERGE INTO TargetTable USING SourceTable ON TargetTable.id = SourceTable.id .... 然后您可以阅读有关使用 When not marched by Target 等的文档。因此您的 Python 可能会换出表名并使用参数连接


推荐阅读