热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何防止通过pyodbc向SQL服务器插入多条记录?

如何防止插入重复数据和处理程序创建表错误。这是我的代码:insert_query''&

如何防止插入重复数据和处理程序创建表错误。这是我的代码:

insert_query = '''INSERT INTO dbo.Tp_tabkeu(report_number,condition,power_error,status,Specification_dBM,CW_frequency) VALUES (?,?,?)
WHERE report_number!=values(a),condition!=values(b),power_error!=values(c),status!=values(d),Specification_dBM!=values(e),CW_frequency!=values(f);'''
for index,row in df.iterrows():
values = (row['report_num'],row['condition'],row[0],row[1],row[2],row[3])


INSERT INTO ... VALUES ... WHERE ...是无效的语法。但是,您可以使用INSERT INTO ... SELECT ... WHERE ...

您已经确认您正在使用SQL Server,并且df.iterrows()表示您正在使用熊猫,因此,您实际上也应该使用SQLAlchemy。 (当使用除SQLite以外的数据库时,pandas依赖于SQLAlchemy。)

此示例在名为[team]的表上执行条件INSERT ...

prov city team_name
---- ------- -----------
ON Toronto Maple Leafs

...,以(省,省)作为主键。

import sqlalchemy as sa
# ...
engine = sa.create_engine(connection_url)
# ...
sql = sa.text("""\
INSERT INTO team (prov,city,team_name)
SELECT :prov AS prov,:city AS city,:team_name AS team_name
WHERE NOT EXISTS (
SELECT * FROM team WHERE prov = :prov AND city = :city)
""")
params = {'prov': 'AB','city': 'Calgary','team_name': 'Flames'}
engine.execute(sql,params)

推荐阅读
author-avatar
大眼妹886
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有