SQLite的LIKE查询中如何给输入变量搭配%通配符使用?
问题修复方案
你的代码存在3处核心错误,调整后可正常运行:
- 字符串拼接语法错误:参数元组内的
%用了中文单引号包裹,且未和变量publisher_ends_with做拼接,完全不符合Python语法规范 - 聚合查询逻辑错误:使用
COUNT()聚合函数但未添加GROUP BY子句,最终只会返回一行统计结果,无法实现按不同Publisher分组统计数量的预期 - 未做资源释放:数据库连接用完后未主动关闭,容易产生资源泄漏
修正后的完整代码如下:
import sqlite3 connection = sqlite3.connect("music.db") cursor = connection.cursor() publisher_ends_with = input("Enter the ending: ") # 拼接LIKE匹配的后缀模式:% + 输入的后缀 match_pattern = f"%{publisher_ends_with}" # 增加GROUP BY子句按Publisher分组 ending_search = cursor.execute( '''SELECT Publisher, COUNT(Publisher) FROM BL_music_records WHERE Publisher LIKE ? GROUP BY Publisher''', (match_pattern,) ).fetchall() # 测试打印结果(可按需删除) for pub, count in ending_search: print(f"出版社:{pub},匹配记录数:{count}") # 关闭连接释放资源 cursor.close() connection.close()
如果你不需要按Publisher分组,只需要统计所有匹配后缀的总记录数,把查询语句改成以下内容即可,同时不需要保留GROUP BY子句:
SELECT COUNT(Publisher) FROM BL_music_records WHERE Publisher LIKE ?
内容的提问来源于stack exchange,提问作者Sasha
相关产品推荐
相关产品推荐

