Python实现含'a'商品涨价及更新行数统计问题求助
解决商品涨价后统计更新行数的问题
问题原因
你写的统计代码输出0,是因为fetchall()返回的是元组列表,每个元素是(Product_name,)这样的元组。原代码里if "a" in i是判断字符串是否存在于元组中,而非元组里的商品名称字符串里,所以条件永远不成立,count始终为0。
解决方案
方案1:修正Python循环统计逻辑
修改循环里的判断逻辑,取出元组中的商品名称字符串再做检查:
# 直接筛选含'a'的商品,减少循环处理量 c.execute("SELECT Product_name FROM products WHERE Product_name LIKE '%a%'") b = c.fetchall() count = 0 for i in b: # 取出元组第一个元素(商品名称),再判断是否包含'a' if "a" in i[0]: count += 1 print(count)
如果你的SQL LIKE 配置为不区分大小写(比如MySQL默认规则),可以统一转小写避免遗漏匹配:
if "a" in i[0].lower():
方案2:直接用游标获取更新行数(更高效)
其实不需要额外查询统计,执行UPDATE语句后,通过游标对象的rowcount属性就能直接拿到受影响的行数,这是最简便的方法:
# 执行涨价更新操作 c.execute("UPDATE products SET price = price * 1.1 WHERE Product_name LIKE '%a%'") # 获取本次更新受影响的行数 update_count = c.rowcount print(f"更新了{update_count}条记录") con.commit()
内容的提问来源于stack exchange,提问作者Synthia
相关产品推荐
相关产品推荐

