在Flask中使用存储过程

问题描述 投票:0回答:1

我是python编程的新手我试图在flask中实现存储过程。

这是我调用存储过程的代码的一部分。

        cursor.execute(insertquery)
        database.commit()
        cursor2.execute("select id from users where userid='"+username1+"'")
        data2=cursor2.fetchall()
        dictionary1=[dict(user=row[0]) for row in data2]
        for data in dictionary1:
            user_store=int((data.get('user')))
        cursor2.callproc('insertPrediction',user_store)
        database.commit()
        database.close()

这是存储过程

DROP PROCEDURE IF EXISTS `S3UploadDB`.`insertPrediction`;
PROCEDURE `S3UploadDB`.`insertPrediction`(IN id int(20))
BEGIN
   INSERT INTO prediction(id,matchno,winner,points)
        VALUES (id,1,'na',-500);
END;

甚至当我从toad调用该过程时,它工作正常并且数据正在更新但是当它从python代码调用时

TypeError: 'int' object is not iterable

它在这行代码中失败了

cursor2.callproc('insertPrediction',user_store)

我在传递之前将值转换为INT,因为存储过程的输入是int类型。我正在使用MySQL请帮我解决这个错误。

python stored-procedures flask
1个回答
0
投票

callproc需要一系列参数,例如列表或元组,即使只有一个参数。使用:

cursor2.callproc('insertPrediction', [user_store])

Link to docs

© www.soinside.com 2019 - 2024. All rights reserved.