python - 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()
解决方案
您应该阅读 Merge 的文档。基本上 MERGE INTO TargetTable USING SourceTable ON TargetTable.id = SourceTable.id .... 然后您可以阅读有关使用 When not marched by Target 等的文档。因此您的 Python 可能会换出表名并使用参数连接
推荐阅读
- python - 在 AWS Lambda (Python) 中将文件从 multipart/form-data 上传到 S3
- python - 加密整行文本
- arrays - 持有一个排序数组 - 反向排序的输入案例
- azure - 从 csv 文件中删除用户的 Azure 许可证
- json - 如何从 Json webtemplate 渲染 HTML
- python - TQDM 和多处理 - python
- google-analytics - 测量协议未注册项目类别
- powershell - 如何在 Power shell 中使用 LINQ 查询对 csv 文件的第二列进行排序
- python - 用于 Watson NLU 的 python 中的多个 API 调用
- php - 通过 Web 应用程序中的 Microsoft Graph 进行多因素身份验证