PyMysql抛出一个警告异常,无法插入数据。
捕捉PyMysql
的警告异常的时候,之前可以插入数据,但是现在突然无法插入数据。
一直会报一个主键冲突的警告。但是之前对于这个警告,确实是可以正确的插入数据,自己还写了一篇博客说明了捕捉警告异常时需要注意的问题。详见
这是我数据库的已有的数据
然后执行下面的语句,会报一个主键冲突的警告。
>>> import pymysql as pm
>>> from warnings import filterwarnings
>>> filterwarnings('error', category=pm.Warning)
>>>
>>> hosts = '127.0.0.1'
>>> port = 3306
>>> db = '*****'
>>> user = 'root'
>>> pw = '****'
>>> ope = pm.connect(host = hosts,
... port = port,
... db = db,
... user = user,
... password = pw,
... charset = 'utf8mb4')
>>> cursor = ope.cursor()
>>>
>>> sql = 'INSERT IGNORE INTO `db_fan` VALUES (1040140724, 2713582921), (1040140724, 1658632135), (1040140724, 5797386896), (1040140724, 5651860686), (1040140724, 2972805212), (1040140724, 5772420820), (1040140724, 5732820113), (1040140724, 5607417885), (1040140724, 5727563505), (1040140724, 1038473082), (1040140724, 5698742027), (1040140724, 2174810337), (1040140724, 5668873560), (1040140724, 1688464225)'
>>>
>>> try:
... cursor.execute(sql)
... except pm.Warning as w:
... ope.commit()
... print (repr(w))
...
Warning(1062, "Duplicate entry '1040140724-2713582921' for key 'PRIMARY'")
我把密码是数据库名用星号代替了。如果换成MySqldb
也会有同样的问题。
python的版本是3.5.2.系统是Ubuntu16.04
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你之前能插入数据一定是除了有冲突的外,还有一部分不冲突的,所以能. 当所有数据都有主键冲突时,也就一条也插不进去了.
冲突的数据还能插进去,那主键不就没有意义了么
执行上面这条SQL试试,如有结果返回说明数据库没有在说慌