gpt4 book ai didi

python - 来自外部调用的MySQL存储过程权限

转载 作者:行者123 更新时间:2023-11-30 00:43:50 24 4
gpt4 key购买 nike

我有一个需要使用“UPDATE”命令的存储过程。当该过程从 MySQL 工作台中运行时,它会正确执行。从外部 Python 脚本调用该过程时,最终的更新语句不会执行。

我使用相同的帐户从 Python 脚本登录到数据库并登录到工作台。

当从 Python 调用时,以前的更新语句可以在该过程中发挥作用。

更新适用于 Python 的语句:

update filelocations set cluster_id=NULL;

更新在 Python 中工作的语句:

update searchdata set cluster_id=(select cluster_id from km_data where ID =         searchdata.TweetID);

该过程使用“root”作为定义者,并且我以 root 身份登录。 Root 拥有所有权限,所以我不知道接下来要调查什么!

代码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `overallKmeans`(tweet_limit int, cluster_num   int)
BEGIN

truncate table km_data;

update searchdata set cluster_id=NULL;
update filelocations set cluster_id=NULL;

调用语句(在工作台和Python中使用):

CALL `tweets`.`overallKmeans`(<{tweet_limit int}>, <{cluster_num int}>);    

没有给出任何错误消息,它只是不更新​​所需的值。将它们保留为原来的样子。该过程似乎正常完成。

这是 km_data 的创建语句:

CREATE TABLE `km_data` (
`primaryID` int(11) NOT NULL AUTO_INCREMENT,
`ID` bigint(20) DEFAULT NULL,
`lat` double DEFAULT NULL,
`lng` double DEFAULT NULL,
`cluster_ID` int(11) DEFAULT NULL,
PRIMARY KEY (`primaryID`)
) ENGINE=InnoDB AUTO_INCREMENT=383 DEFAULT CHARSET=utf8;

“cluster_id”字段是“searchdata”中尝试更新的字段。这是唯一不适用于 Python 的更新。

最佳答案

我今天也遇到了同样的问题。当您在调用存储过程之后“提交”更改时,似乎可以工作。

步骤:1. Cursor.callproc("xyz")2. Cursor.execute("提交")

我从一个在 pyodbc 中面临类似问题的人那里挑选了它......

谢谢,中号

关于python - 来自外部调用的MySQL存储过程权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21554632/

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