PyMysql抛出一个警告异常,无法插入数据。

发布于 2022-09-06 06:45:49 字数 1763 浏览 15 评论 0

捕捉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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

泛泛之交 2022-09-13 06:45:49

你之前能插入数据一定是除了有冲突的外,还有一部分不冲突的,所以能. 当所有数据都有主键冲突时,也就一条也插不进去了.
冲突的数据还能插进去,那主键不就没有意义了么

select * from db_fan where uid=1040140724 and fan_id=2713582921;

执行上面这条SQL试试,如有结果返回说明数据库没有在说慌

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文