You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:15:08