Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MySQL游标使用最后一个游标更新所有列_Python_Mysql_Sql - Fatal编程技术网

Python MySQL游标使用最后一个游标更新所有列

Python MySQL游标使用最后一个游标更新所有列,python,mysql,sql,Python,Mysql,Sql,我试图在aqi_db数据库内的aqi表中遍历City和practice列。 我在我的计算机中的其他数据库上做了完全相同的事情,它工作得很好,但当我创建新的过程用于不同的表时,它不能正常工作 这就是我的桌子的样子: ID Country City Aqi lat lng time practice 1 Canada Acton 63 51.4925 -0.257252 2019-07-24 14:00:00

我试图在aqi_db数据库内的aqi表中遍历City和practice列。 我在我的计算机中的其他数据库上做了完全相同的事情,它工作得很好,但当我创建新的过程用于不同的表时,它不能正常工作

这就是我的桌子的样子:

ID  Country City    Aqi   lat      lng              time            practice
1   Canada  Acton   63  51.4925 -0.257252   2019-07-24 14:00:00     33
2   Canada  Alameda 46  37.7936 -122.263    2019-07-24 07:00:00     33
3   Canada  Altona  46  53.5557 9.94306     2019-07-24 17:00:00     33
5   Canada  Amherst 31  42.8864 -78.8784    2019-07-24 10:00:00     33
6   Canada  Athens  32  33.9458 -83.3722    2019-07-24 08:00:00     33
7   Canada  Massa   54  30.2583 -97.7203    2018-05-03 16:00:00     33
ID  Country City    Aqi   lat      lng              time            practice
1   Canada  Acton   63  51.4925 -0.257252   2019-07-24 14:00:00     Acton33
2   Canada  Alameda 46  37.7936 -122.263    2019-07-24 07:00:00     Alameda33
3   Canada  Altona  46  53.5557 9.94306     2019-07-24 17:00:00     Altona33
5   Canada  Amherst 31  42.8864 -78.8784    2019-07-24 10:00:00     Amherst33
6   Canada  Athens  32  33.9458 -83.3722    2019-07-24 08:00:00     Athens33
7   Canada  Massa   54  30.2583 -97.7203    2018-05-03 16:00:00     Massa33
对于每一次迭代,我都试图连接城市和实践,并更新当前实践行。预期结果如下所示:

ID  Country City    Aqi   lat      lng              time            practice
1   Canada  Acton   63  51.4925 -0.257252   2019-07-24 14:00:00     33
2   Canada  Alameda 46  37.7936 -122.263    2019-07-24 07:00:00     33
3   Canada  Altona  46  53.5557 9.94306     2019-07-24 17:00:00     33
5   Canada  Amherst 31  42.8864 -78.8784    2019-07-24 10:00:00     33
6   Canada  Athens  32  33.9458 -83.3722    2019-07-24 08:00:00     33
7   Canada  Massa   54  30.2583 -97.7203    2018-05-03 16:00:00     33
ID  Country City    Aqi   lat      lng              time            practice
1   Canada  Acton   63  51.4925 -0.257252   2019-07-24 14:00:00     Acton33
2   Canada  Alameda 46  37.7936 -122.263    2019-07-24 07:00:00     Alameda33
3   Canada  Altona  46  53.5557 9.94306     2019-07-24 17:00:00     Altona33
5   Canada  Amherst 31  42.8864 -78.8784    2019-07-24 10:00:00     Amherst33
6   Canada  Athens  32  33.9458 -83.3722    2019-07-24 08:00:00     Athens33
7   Canada  Massa   54  30.2583 -97.7203    2018-05-03 16:00:00     Massa33
但它正在回归

ID  Country City    Aqi   lat      lng              time            practice
1   Canada  Acton   63  51.4925 -0.257252   2019-07-24 14:00:00     Massa33
2   Canada  Alameda 46  37.7936 -122.263    2019-07-24 07:00:00     Massa33
3   Canada  Altona  46  53.5557 9.94306     2019-07-24 17:00:00     Massa33
5   Canada  Amherst 31  42.8864 -78.8784    2019-07-24 10:00:00     Massa33
6   Canada  Athens  32  33.9458 -83.3722    2019-07-24 08:00:00     Massa33
7   Canada  Massa   54  30.2583 -97.7203    2018-05-03 16:00:00     Massa33
我已经检查了我的代码好几次,我不明白为什么会这样。我的代码:

delimiter $$
CREATE PROCEDURE update_aqi()
begin
    DECLARE v_city varchar(75);
    DECLARE v_practice varchar(10);
    DECLARE v_finished integer default 0;
    DECLARE c1 CURSOR for select City, practice from aqi;
    DECLARE continue handler for NOT FOUND set v_finished = 1;
    open c1;
    my_loop: LOOP
        FETCH c1 into v_city, v_practice;
        if v_finished = 1 then
            leave my_loop;
        end if;
        UPDATE aqi SET practice = concat(v_city, v_practice);
        END LOOP my_loop;
    close c1;
end $$
call update_aqi();
进一步的目标:不是用concatenate(city,practice)更新practice列中的每一行,而是触发python函数,该函数接收city作为参数并返回值,该值将在practice列中更新。 注意:python函数将调用api。
有什么建议吗?

你能分享你的代码吗?哎呀,忘了,哈哈。行了!您需要将WHERE添加到UPDATE语句中,否则您将更新整个表<代码>更新aqi设置实践=concat(v_城市,v_实践),其中id=或者更好,您可以通过一个查询更新整个表
update aqi SET practice=CONCAT(城市,实践)更新aqi设置实践=concat(v_城市,v_实践),其中id=
或者更好,您可以通过一个查询更新整个表
update aqi SET practice=CONCAT(城市,实践)