我是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请帮我解决这个错误。
callproc
需要一系列参数,例如列表或元组,即使只有一个参数。使用:
cursor2.callproc('insertPrediction', [user_store])