Python数据库查询:输入名称不在表中时如何添加错误提示
问题背景
现有Python类方法用于根据用户输入的书名检索数据库Books表中的对应书籍信息,原代码未处理输入书名不存在的场景,查询无结果时不会给出任何反馈,同时原代码存在SQL参数传递格式不规范的隐患。
该函数可根据输入的名称从数据库中检索书籍的相关信息
修改方案
核心逻辑是在执行查询后先判断结果集是否为空,空结果时输出明确错误提示,非空时再遍历输出内容,同时修正参数传递的问题。
修改后完整代码
def search_by_name(self): query = """SELECT * FROM Books WHERE book_name = ?""" self.Name = input("Enter The Book Name:") # 按数据库API规范,参数需传入序列类型,单个参数要包装为元组 cursor.execute(query, (self.Name,)) # 获取所有匹配的查询结果 book_records = cursor.fetchall() # 无匹配结果时给出错误提示 if not book_records: print(f"*错误提示*:未查询到书名为「{self.Name}」的书籍,请确认输入名称是否正确后重试") return # 有匹配结果时逐行打印书籍信息 for row in book_records: print(row)
关键改动说明
- 修正SQL参数传值问题:原代码直接传入字符串
self.Name作为execute参数,不符合Python DB API要求,包装为单元素元组(self.Name,)可避免参数解析报错 - 新增结果集空判断:通过
cursor.fetchall()拉取全部查询结果,判断结果列表为空时直接输出错误提示,让用户明确知道查询无结果 - 保留原有遍历输出逻辑,查询到对应书籍时的展示效果和原代码完全一致
内容的提问来源于stack exchange,提问作者Mazen Hamed
相关产品推荐
相关产品推荐

