首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用pyodbc executemany()处理主键约束冲突

如何使用pyodbc executemany()处理主键约束冲突
EN

Stack Overflow用户
提问于 2019-01-22 04:28:43
回答 1查看 1.6K关注 0票数 3

我有一个脚本可以使用DataFrame在表中插入executemany()

问题是,该表的ID为主键,有时可能会插入具有相同ID的行。

我想知道是否有一种简单的方法来处理这种异常并继续执行executemany()

我想的另一种方法是检查表中的所有IDs,并在插入数据库之前删除它们.但我不知道这会不会是表演..。

我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
params = (tuple(row) for _, row in df.iterrows())
sql = '''INSERT INTO stilingue.stalker_comments values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'''
start = time.time()
try:
    self.cursor.executemany(sql, params)
    self.conn.commit()
except Exception as e:
    print(e)
    self.conn.rollback()
    print('Something went wrong...')
end = time.time()
print('Execution time: {0:.2f} seconds.'.format(end-start))

DataFrame

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    channel followers   gender  hashtags    interactions    likes   location    mentions    name    page_comment    ... text    themes  uid user_image_url  user_url    username    verified    videoplays  business    rt_count
0   Inbox do Facebook   0   Não Definido        0   0           Midiam Mendes   False   ... Sacanagem isso né?? Poorq vocês dizeram que o ...       1995608377159933    https://storage.googleapis.com/usersstilingue/...           False   0   Itaú    0
1   Inbox do Facebook   0   Não Definido        0   0           Midiam Mendes   False   ... Eu tenho provas , e posso processar vocês!!     1995608377159933    https://storage.googleapis.com/usersstilingue/...           False   0   Itaú    0
2   Inbox do Facebook   0   Não Definido        0   0           Midiam Mendes   False   ... Isso é um absurdo       1995608377159933    https://storage.googleapis.com/usersstilingue/...           False   0   Itaú    0

回溯

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
('23000', "[23000] [Microsoft][ODBC SQL Server Driver][SQL Server]Violation of PRIMARY KEY constraint 'PK__stalker___DD37D91A4691B0F7'. Cannot insert duplicate key in object 'stilingue.stalker_comments'. The duplicate key value is (m__g64-pbys7OlEvp8xmfyktlNIHrUPQPiNrcKrPVOF_Lj84OJfN4WtAJ92lj7YnzAOQ1B7EDCJf85k_UcwB0-4Q). (2627) (SQLExecDirectW); [23000] [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated. (3621)")
EN

回答 1

Stack Overflow用户

发布于 2019-01-22 05:24:57

如果数据不是很大,最简单的方法是在数据库中创建一个没有PK的临时表。然后将数据插入到临时表中,从临时表中删除复制(如果您有server,可以使用以下语法删除复制),并将数据插入主表中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 WITH table_1 AS 
(SELECT *,RN=ROW_NUMBER() OVER(PARTITION BY [pk_field]
 order by date) 
 FROM [temporary_table])
 DELETE FROM table_1  WHERE RN>1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54308346

复制
相关文章
MySQL主键约束使用
MySQL主键约束是一种用于确保表中每行数据的唯一性的限制。每个表只能有一个主键,它可以是一个或多个列。
堕落飞鸟
2023/05/11
2.6K0
【说站】sql如何设置主键、如何删除主键约束
如果字段已经建好,可以用以下命令来设置主键,当然前提是id为自增字段,一般设置为int数据类型,主键建议使用bigint类型,如果是其他数据类型的话设置为主键会报错。
很酷的站长
2022/11/24
3K0
【说站】sql如何设置主键、如何删除主键约束
主、外键约束_创建主键约束
主键和外键是两种类型的约束; 1.主键是能唯一的标识表中的每一行,就是说这一列非空且值不重复,可以指定为主键;作用是用来强制约束表中的每一行数据的唯一性; 2.外键是b表中的某一列引用的值来源于a表中的主键列。也是约束b表中的外键列的值必须取致a表中的主键列值,不是其中的值就不能插入b表中。可以形成a表b表的联系,保持数据的约束和关联性。
全栈程序员站长
2022/11/03
2K0
SQL2012_主键约束
SQL中主键的约束 if exists(select * from sys.databases where name='SchDB') drop database SchDB create database SchDB on primary( name='S_DB',filename='D:\S_DB.mdf',size=5mb,maxsize=100mb,filegrowth=10% ),( name='S_DB_N_1',filename='D:\S_DB_N_1.ndf',size=1m
赵腰静
2018/03/09
9620
对复制实施主键约束
在本文中,我们介绍一个配置选项,该选项控制复制通道是否允许创建没有主键的表。这延续了我们最近在复制安全性方面的工作,在该工作中,我们允许用户强制执行权限检查和/或强制执行基于行的事件。
MySQLSE
2020/09/28
9160
对复制实施主键约束
主键约束索引的奇葩现象
在Oracle数据库中,我们知道创建主键约束的时候,会自动创建唯一索引,靠着唯一索引,保证数据的唯一,删除主键约束时,会自动删除对应的唯一索引。但是最近碰到了个奇怪的问题,同事说测试环境中删除一张表的主键约束,发现约束删了,但唯一索引还在,难道有什么隐藏的问题?
bisal
2021/09/06
5790
主键约束索引的奇葩现象
主键约束索引的奇葩现象
在Oracle数据库中,我们知道创建主键约束的时候,会自动创建唯一索引,靠着唯一索引,保证数据的唯一,删除主键约束时,会自动删除对应的唯一索引。但是最近碰到了个奇怪的问题,同事说测试环境中删除一张表的主键约束,发现约束删了,但唯一索引还在,难道有什么隐藏的问题?
bisal
2020/10/28
8210
主键约束索引的奇葩现象
MySQL add/drop字段时报主键冲突
错误提示是主键冲突,但是当我们去查询 id= 7458421 时,并无此记录。是不是很奇怪?遇到这种情况,一般有如下场景:
用户1278550
2019/10/13
4.9K0
【MySQL知识点】唯一约束、主键约束
唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一约束是通过unique定义的。语法如下:
颜颜yan_
2022/12/01
3.1K0
【MySQL知识点】唯一约束、主键约束
数据库约束-主键约束-唯一约束-非空约束-默认值
约束其实就是一种限制,用于修饰表中的列. 通过这种限制来保证表中数据的正确性、有效性和完整性。
Devops海洋的渔夫
2022/01/17
6.4K0
数据库约束-主键约束-唯一约束-非空约束-默认值
oracle常用基础命令创建表多字段组合主键约束查看表的主键名称 注意大写禁用开启主键约束删除约束等效上面
使用系统用户登录 [username/password][@server][as sysdba|sysoper] 查看登录的用户 show user 启用scott用户 alter user scott account unlock|lock; 创建表空间 # 表空间 create tablespace $teblespace_name datafile '$filepath' size $sizeM; # 临时表空间 create temporary tablespace $teblespace_nam
AlicFeng
2018/06/08
1.4K0
【说站】mysql主键约束的设置
UNIQUE 和 PRIMARY KEY 的区别:一个表可以有多个字段声明为UNIQUE,但只能有一个 PRIMARY KEY声明。
很酷的站长
2022/11/23
2.7K0
mysql 取消外键约束_主键约束和外键约束什么意思
解决方法是在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0;
全栈程序员站长
2022/11/01
6.6K0
mysql 取消外键约束_主键约束和外键约束什么意思
MySQL中主键为0和主键自排约束的关系
Insert 进去 id = 0的数据,数据会从实际的行数开始增加,和从0变化不一样;
星哥玩云
2022/08/16
4.3K0
MySQL中主键为0和主键自排约束的关系
MySQL数据库——表的约束(非空约束、唯一约束、主键约束、外键约束)
约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类:
Winter_world
2020/09/25
14.7K0
MySQL数据库——表的约束(非空约束、唯一约束、主键约束、外键约束)
oracle--约束(主键、非空、检查)
使用外键约束 --(1)、在字段后使用 references 参照表表名(参照字段) --(2)、在所有字段后使用 constraints fk_表名_字段名 foreign key(字段名) references 参照表名(参照字段名) --(3)、在创建表后使用alter table 表名 add constraints fk_表名_字段名 foreign key(字段名) references 参照表名(参照字段名) --删除外键 alter table 表名 drop constraints fk_表名_字段名
eadela
2019/09/29
2K0
主键、唯一索引、普通索引及约束
唯一索引允许空值的存在,空值将视为。如果由单列组成唯一索引,则此列仅允许一个空值存在;如果由多列组成唯一索引,则值与空值的组合仅允许一个存在。
许杨淼淼
2019/12/29
4.7K0
【Java 进阶篇】MySQL主键约束详解
MySQL是一个强大的关系型数据库管理系统,用于存储和管理大量数据。在数据库中,主键约束是一项非常重要的概念,它有助于确保数据的完整性和唯一性。本文将详细介绍MySQL主键约束,包括什么是主键、为什么需要主键、如何创建主键以及主键的最佳实践。
繁依Fanyi
2023/10/12
3580
【Java 进阶篇】MySQL主键约束详解
(细节)My SQL中主键为0和主键自排约束的关系
开始不设置主键 表的设计如下: 如果id的位置有好几个0的话:设置主键并且自动排序时,0会从1开始递增; Insert 进去 id = 0的数据,数据会从实际的行数开始增加,和从0变化不一样; 现在主
汪凡
2018/05/29
1.2K0
(解释文)My SQL中主键为0和主键自排约束的关系
  上一篇我们说了关于自排如果主键是0的问题,在这里我搞清楚了原因,导致这种情况是因为在SQL中对自排设置了初始值:   从这里可以看到这两个变量一个是自增的初始值,一个是增量,这里都是1,所以在设置
汪凡
2018/05/29
1.3K2

相似问题

使用用于fast_executemany的pyodbc连接到fast_executemany

25

如何在pyodbc中使用executemany运行多个SELECT查询

182

pyodbc executemany不是批处理插入SQL server插入非常慢。

10

executemany(sql,value)不会执行。python pyodbc

115

插入MySQL表主键约束冲突

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文