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

Python调用MySQL存储过程参数传递报错求助

Python调用MySQL存储过程参数传递报错求助

兄弟,我一眼就瞅出你代码里的问题啦——callproc方法的参数传递方式不对!

先给你说清楚pymysql里callproc的正确用法:

  • 第一个参数直接写存储过程的名字就行,不需要加CALL关键字,这是很多新手容易踩的坑;
  • 第二个参数必须是一个元组或者列表,用来传递存储过程需要的参数,你现在直接把两个日期参数分开传,肯定会触发参数数量不匹配的错误。

给你改好的代码示例:

import pymysql

# 建立数据库连接
mysql = pymysql.connect(
    host='localhost',
    user='root',
    password='',
    db='fact',
    charset='utf8mb4',
    cursorclass=pymysql.cursors.DictCursor
)

try:
    cur = mysql.cursor()
    # 修正callproc的参数:去掉CALL,把日期参数打包成元组
    cur.callproc('Buscar_fecha', (form.dt1.data, form.dt2.data))
    # 获取存储过程的执行结果
    result = cur.fetchall()
    # 如果存储过程涉及数据修改,需要提交事务
    # mysql.commit()
finally:
    # 记得关闭游标和连接,避免资源泄漏
    cur.close()
    mysql.close()

另外还要注意几个小细节:

  • 你原代码里把fetchall的结果赋值给了comitt,这明显是拼写错误,建议改成result这类有意义的变量名;
  • 最好把数据库操作放在try...finally块里,确保即使出错也能释放连接资源;
  • 如果你的存储过程只是查询操作,不需要commit,但如果有插入/更新/删除操作,一定要记得调用mysql.commit()提交事务。

备注:内容来源于stack exchange,提问作者Joshua Flores

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 11:32:34