【问题标题】:Python mysql stored procedure callproc() doesnt workPython mysql存储过程callproc()不起作用
【发布时间】:2023-12-14 11:50:01
【问题描述】:

我在 mysql 数据库上有一个存储过程。当我在 phpmyadmin 上调用这个过程时

CALL bakiyesifirla('Deneme');


CREATE PROCEDURE bakiyesifirla(IN cadres varchar(500)) 
BEGIN 
    set @bakiye=0; 
    CALL bakiyecek(cadres,@bakiye); 
    IF @bakiye<0 THEN 
       CALL bakiyeguncelle(0,cadres); 
    END IF; 
END; –

它工作正常,但是当我尝试在 python 上调用它时

  cadres='Deneme'
  mycursor = mydb.cursor()
  mycursor.callproc('bakiyesifirla',[cadres,])
  mycursor.close()

它不会给出任何错误,但不会产生任何影响。

【问题讨论】:

  • 你能添加porocdure吗
  • 你确定你使用的是pyodbc吗?当我尝试使用.callproc() 时,我得到“AttributeError:'pyodbc.Cursor' 对象没有属性'callproc'”。 pyodbc 尚未实现 .callproc(),如 wiki here 中所述。

标签: python mysql stored-procedures pyodbc mysql-connector


【解决方案1】:

使用tuples 而不是数组

mycursor.callproc('bakiyesifirla',(cadres,))

但我看不出你如何检查程序是否被调用。

添加一些参数来检查,如果子存储过程也在运行,请参阅提供的链接

【讨论】:

  • 很难说他们在工作台上运行的其他程序会发生什么?
  • 如果数据库值更改为 0,我会检查它
  • 当我执行 CALL bakiyesifirla('Deneme'); phpmyadmin 上的这个 sql 命令
  • 试试mysql提供的示例程序,看看是否有答案
  • 我已经尝试过简单的程序,它可以工作,但不知何故,一个在 python 上不起作用,其他简单的程序工作我想知道为什么会这样。
最近更新 更多