gpt4 book ai didi

python - 带有python的mysql存储过程中的SQL_CALC_FOUND_ROWS

转载 作者:行者123 更新时间:2023-11-29 00:53:10 25 4
gpt4 key购买 nike

查看这个存储过程

-- --------------------------------------------------------------------------------
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `get_followers`(in _user_id int,in _topic_id int,in _type int)
MAIN:BEGIN

SELECT SQL_CALC_FOUND_ROWS follow.user_id
-- COUNT(follow.user_id) AS _topic_idcount
FROM
follow
WHERE
follow.followee_user_id = _user_id
AND (topic_id = _topic_id OR topic_id = 0)
GROUP BY follow.user_id;
SELECT FOUND_ROWS() AS count;

END

当我在 mysql workbench 中对这个存储过程函数使用测试调用时,它给出了预期的结果作为计数。

但是当我执行 python 代码并从该查询中转储 json 时,它给出了以下结果。

[{"user_id": 3}, {"user_id": 4}, {"user_id": 5}]

根据我的观点,它没有考虑 SELECT FOUND_ROWS() AS count; 当我调用 SP form python code as fallow 时这条语句

results = execute_sp("get_followers", [user_id, topic_id, type])

这里的 execut 是我的自定义函数。

def execute_sp( sp_name, paramaters ):
#helper method to run sp's and return results
db = Db()
cursor = db.cursor()
cursor.callproc(sp_name,paramaters)
results = cursor.fetchallDict()
cursor.close()
return results

请帮我解决这个问题......

最佳答案

你必须试试看它是否有效——我现在无法测试它......

results = cursor.fetchallDict() 正在返回 第一个 结果集,就 mysqldb 而言。 IE。第一个 SELECT 的结果。尝试添加 nextset() 调用,如下所示:

def execute_sp( sp_name, paramaters ):
#helper method to run sp's and return results
db = Db()
cursor = db.cursor()
cursor.callproc(sp_name,paramaters)
cursor.nextset() #Need the second result set in the proc
results = cursor.fetchallDict()
cursor.close()
return results

如果它不起作用,请告诉我。

关于python - 带有python的mysql存储过程中的SQL_CALC_FOUND_ROWS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7384066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com