pymysql.err.IntegrityError: (1062, “Duplicate entry ‘ ‘ for key ‘PRIMARY‘“)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了pymysql.err.IntegrityError: (1062, “Duplicate entry ‘ ‘ for key ‘PRIMARY‘“),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2384字,纯文字阅读大概需要4分钟。
内容图文
在python中用insert into写入mysql数据库时,可能会出现如题所示异常。
当然,如何改是属于数据方面的知识,网上有很多,不在这里述说。
本文要解决的是:如何在程序中获取该错误,并进行异常处理。
一、捕获异常。
常用方法:
当然在程序调试过程中出现该异常,用肉眼来看就行了。在程序中就需要捕获该异常。参考Python3 MySQL 数据库连接 - PyMySQL 驱动中的代码:
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (‘Mac‘, ‘Mohan‘, 20, ‘M‘, 2000)""" try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback() # 关闭数据库连接 db.close() 以上代码可以应付大多数程序场景。
二、异常处理
在捕获异常后,异常有很多种,只对感兴趣(或者说:能处理的)异常进行处理。比如如题所示的异常。一般情况下程序中遇到这种异常,可以忽略。于是以上代码就可以进行修改
首先,为了能获取异常原因,就要把except:改为except Exception as err:
其次,为了识别出是能处理的原因,可以使用正则表达式来匹配异常原因是感兴趣的,而不是别的原因。这中间有个问题:上句中err的类型是pymysql.err.IntegrityError对象。而正则表达式只能处理string类型,所以需要把pymysql.err.IntegrityError对象转变为string对象。幸运的是python有个很好用的函数str()。
最后上改过后的代码
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (‘Mac‘, ‘Mohan‘, 20, ‘M‘, 2000)""" try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except Exception as err: #检查异常原因是否是感兴趣的 result1 =re.search(‘Duplicate entry.*key.*PRIMARY‘, str(err)) #如果是,什么都不用做 #否则(也不知道是什么原因),那就回滚吧 if(result1 ==None): # 如果发生错误则回滚 db.rollback() # 关闭数据库连接 db.close()
pymysql.err.IntegrityError: (1062, “Duplicate entry ‘ ‘ for key ‘PRIMARY‘“)
标签:imp 需要 commit mysql 数据库 正则 情况下 == 很多 常用方法
本文系统来源:https://www.cnblogs.com/zhenghuiwen/p/14638937.html
内容总结
以上是互联网集市为您收集整理的pymysql.err.IntegrityError: (1062, “Duplicate entry ‘ ‘ for key ‘PRIMARY‘“)全部内容,希望文章能够帮你解决pymysql.err.IntegrityError: (1062, “Duplicate entry ‘ ‘ for key ‘PRIMARY‘“)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。