python 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参考手册

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值