python mysql 8.0.20 批量更新(没有则插入,有则更新)解决values函数过期警告

博主分享了在使用Python操作MySQL数据库时遇到的批量数据处理问题。由于MySQL 8.0.20开始不推荐使用VALUES函数,导致出现警告。通过查阅官方文档,博主发现应使用别名代替VALUES,并提供了修改后的SQL语句,成功实现了数据的无重复插入和更新,解决了1287警告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载Pthon mysql 8.0.20 批量更新(没有则插入,有则更新)解决values函数过期警告

最近用Python写个小程序练手,其中需要批量将数据添加到MySQL数据库,并且数据还要进行查重,如果不存在则批量插入数据,如果存在则批量更新数据,sql语句如下:

InUpSql = "INSERT INTO testimgs (category,picname,url,downstatus,reviseDate,isInvalid) VALUES " \
      "(%s, %s, %s, %s, %s, %s) " \
      "ON DUPLICATE KEY UPDATE category = VALUES(category), " \
      "picname = VALUES(picname) , reviseDate = VALUES(reviseDate), isInvalid=VALUES(isInvalid)"

sql运行后pymysql报1287警告,但是数据已经插入到数据库

D:\Python\lib\site-packages\pymysql\cursors.py:170: Warning: (1287, “‘VALUES function’ is deprecated and will be removed in a future release. Please use an alias (INSERT INTO … VALUES (…) AS alias) and replace VALUES(col) in the ON DUPLICATE KEY UPDATE clause with alias.col instead”)

查看警告信息,意思是“ VALUES函数”已被弃用,在以后的版本中将被删除,让用别名替换values函数。查看mysql官方文档说明

官方文档介绍values()函数从MySQL 8.0.20开始不推荐使用,因为前段时间用的mysql8.0.13损坏,我重装了mysql为8.0.20版本,所以报了这个警告,修改后的语句如下:

InUpSql = "INSERT INTO testimgs (category,picname,url,downstatus,reviseDate,isInvalid) VALUES " \
      "(%s, %s, %s, %s, %s, %s) AS new " \
      "ON DUPLICATE KEY UPDATE category = new.category, " \
      "picname = new.picname , reviseDate = new.reviseDate,isInvalid= new.isInvalid"

执行结果:

批量测试的10条数据已经全部添加到数据,问题解决。

遇到问题多看文档。O(∩_∩)O哈哈~

附 mysql8.0参考手册    https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html
————————————————
原文链接:https://blog.youkuaiyun.com/weixin_42450945/article/details/106562941

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值