Python sqlite3按用户输入分类查询影片ID时报占位符语法错误如何解决
问题原因
报错的核心原因是SQLite的参数化查询占位符语法使用错误。SQLite不支持%s作为参数占位符,该语法仅适用于MySQL等其他数据库,SQLite规定使用?作为参数占位符。
修复方法
- 把
c.execute方法内SQL语句中的%s替换为?即可解决语法报错 - 可选优化:可直接在SQL语句中加入
DISTINCT关键词实现去重,无需后续用Python处理,查询效率更高
修正后的完整代码
import sqlite3 # 连接数据库 conn = sqlite3.connect('sakila.db') c = conn.cursor() # 校验数据库连接状态 if conn: print("连接成功") else: print("连接失败") kategorija = input("输入影片分类: ") # 替换占位符为?,加入DISTINCT直接完成去重 c.execute("SELECT DISTINCT FID FROM film_list WHERE category=?", (kategorija,)) film = c.fetchall() print(film) # 操作完成后关闭连接避免资源占用 conn.close()
内容的提问来源于stack exchange,提问作者Dmitreeey
相关产品推荐
相关产品推荐

