python 无法执行mysql存储过程中的函数更新

Brickie-liu 2018-12-08 05:49:20
CREATE DEFINER=`root`@`localhost` PROCEDURE `link_check`(IN xlh VARCHAR(64))
BEGIN
DECLARE xlhExist INT;
DECLARE jid INT;
DECLARE jcode INT;
DECLARE jmsg VARCHAR(256);
SELECT COUNT(id) , id INTO xlhExist, jid FROM table_client_state WHERE xuliehao=xlh;

IF xlhExist THEN
/*存在的话,是否超时*/
SELECT "", 0 INTO jmsg, jcode;
ELSE
/*不存在,*/
SELECT "", 2 , getRSId(1) INTO jmsg, jcode, jid;
END IF;
SELECT jid AS id, jmsg AS msg, jcode AS CODE;
/*写入日志*/
INSERT INTO table_log (xuliehao, random_service_id, msg )VALUE(xlh, jid, jmsg);
END$$

DELIMITER ;

getRSId(1)函数和 INSERT INTO没有执行。

CREATE DEFINER=`root`@`localhost` FUNCTION `getRSId`(aid BIGINT(20)) RETURNS BIGINT(20)
BEGIN
DECLARE jid BIGINT;
UPDATE table_admin SET rs_id=(@jid:=rs_id+1) WHERE id=aid;
RETURN @jid;
END$$

DELIMITER ;







db = pymysql.connect(self.host, self.user, self.pw, self.dbname, charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor(cursor=pymysql.cursors.DictCursor)
  sql = 'CALL link_check("%s");'%key
# 使用 execute() 方法执行 SQL 查询
cursor.execute(sql)
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print("data : %s " % data)
# 关闭数据库连接
cursor.close()
db.close()
...全文
161 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2018-12-08
  • 打赏
  • 举报
回复
蹭个分
吉普赛的歌 2018-12-08
  • 打赏
  • 举报
回复
如果解决了就结贴吧。
Brickie-liu 2018-12-08
  • 打赏
  • 举报
回复 1
自己动手,丰衣足食。 现在 不管是游标,还是query 如果有修改数据操作,必须 执行 db.commit()

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧