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

SQLite3.OperationalError报错:不存在stock_name列的技术咨询

解决方案:SQLite OperationalError(不存在stock_name列)

错误原因

你的process_user_input1函数中UPDATE语句存在两个关键问题:

  • SET BRstage=BRstage:SQL解析器会将等号两侧的BRstage都识别为表的列名,不会读取你定义的Python变量值
  • WHERE stockName=stock_name:同样,SQL把stock_name误认为是表的列名,而非Python变量,因此触发“不存在stock_name列”的错误

修正后的代码

将UPDATE语句改为参数化查询,用?作为占位符,把变量值通过execute的第二个参数传入,既解决变量识别问题,还能避免SQL注入风险:

def process_user_input1(data):
    print("Process_user_input1 started")
    # 获取数据中的用户输入
    stock_name = data.get('stockName')
    BRstage = data.get('BRstage')

    # 创建新连接和游标
    conn = sqlite3.connect('C:/SQLite/pythonstock/database.db')
    c = conn.cursor()
    # 使用参数化查询,?是占位符,对应后面元组中的变量值
    c.execute('UPDATE stocks SET BRstage = ? WHERE lower(stockName) = ?', (BRstage, stock_name.lower()))

    conn.commit()
    conn.close()
    processed_input1 = 'success'
    response = {'processed_input1': processed_input1}
    return response

额外优化建议

  • 可以添加异常捕获与参数校验,避免无效输入或数据库错误导致的崩溃:
def process_user_input1(data):
    print("Process_user_input1 started")
    stock_name = data.get('stockName')
    BRstage = data.get('BRstage')
    
    # 校验必要参数是否存在
    if not stock_name or BRstage is None:
        return {'processed_input1': 'error', 'msg': '缺少stockName或BRstage参数'}
    
    try:
        conn = sqlite3.connect('C:/SQLite/pythonstock/database.db')
        c = conn.cursor()
        c.execute('UPDATE stocks SET BRstage = ? WHERE lower(stockName) = ?', (BRstage, stock_name.lower()))
        conn.commit()
        
        # 检查是否有行被更新,避免输入不存在的股票时返回成功的误导
        if c.rowcount == 0:
            return {'processed_input1': 'error', 'msg': '未找到对应股票'}
        return {'processed_input1': 'success'}
    except Exception as e:
        conn.rollback()  # 出错时回滚事务
        return {'processed_input1': 'error', 'msg': str(e)}
    finally:
        conn.close()  # 确保数据库连接最终关闭

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 01:12:12