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

Python中SQLite按类别查询库存的参数传递问题

问题解决:SQLite查询无法返回结果的修复

你的search_ims_category_items函数存在两个核心问题:

  • 执行SQL查询后没有获取并返回结果集,调用方拿到的是None,自然无法遍历输出
  • 未配置游标行工厂,默认返回的元组无法通过字典键(如item['product_name'])访问字段

修复后的代码

修改search_ims_category_items函数:

import sqlite3

def search_ims_category_items(category):
    with DatabaseConnection('inventory.db') as connection:
        # 设置行工厂,让查询结果支持字典式字段访问
        connection.row_factory = sqlite3.Row
        cursor = connection.cursor()
        # 注意:不要用f-string拼接SQL,直接用占位符即可,避免SQL注入风险
        cursor.execute('SELECT * FROM inventory WHERE category = ?', (category,))
        # 获取所有匹配的结果并返回
        return cursor.fetchall()

关键修复点说明

  1. 添加结果返回逻辑:调用cursor.fetchall()获取所有查询结果,确保函数能返回数据给调用方
  2. 配置row_factory:通过connection.row_factory = sqlite3.Row,让查询返回的行对象支持用字段名(如product_name)作为键访问值,匹配调用函数中的字典式取值方式
  3. 移除多余的f-string:SQL参数化查询不需要用f-string包裹,直接写原始SQL字符串即可,既规范又能避免SQL注入风险

内容的提问来源于stack exchange,提问作者user20770465

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:35:27