gpt4 book ai didi

python - 如何替换 python/mysql 中的列表

转载 作者:行者123 更新时间:2023-11-29 12:43:28 24 4
gpt4 key购买 nike

这是使用 MySQL 中的 python mysql.connector。

我想编写一个更新查询,其中 id 位于列表中,例如

UPDATE tbl SET thing=1 WHERE id IN (1,2,3,4,5);

如果我占位单个元素,我会写:

qry = ("UPDATE tbl SET thing=1 WHERE id=%s")
cur.execute (qry,(var,))

我不知道我的列表每次有多长,所以我不能使用 %s、%s、%s ...n 等。我可以 ", “.join(list),每次只用原始字符串编写一个查询,但感觉就像一个黑客。

有没有更好的方法来做这样的事情?一般来说,这可能是关于在查询中使用占位符的一个更广泛的问题,但我不确定。

最佳答案

如果查询需要IN,则使用IN,则无需将其替换为=,例如:

mysql> select * from foo;
+------+-------+
| id | thing |
+------+-------+
| 1 | 5 |
| 2 | 5 |
| 3 | 5 |
| 4 | 5 |
| 5 | 5 |
+------+-------+
5 rows in set (0.00 sec)

>>> cur = conn.cursor()
>>> my_ids
[1, 3, 5]
>>> sql
'UPDATE foo SET thing=1 WHERE id IN %s'
>>> cur.execute(sql, (my_ids,))
3L
>>> conn.commit()

然后所有行都将被更新:

mysql> select * from foo;
+------+-------+
| id | thing |
+------+-------+
| 1 | 1 |
| 2 | 5 |
| 3 | 1 |
| 4 | 5 |
| 5 | 1 |
+------+-------+
5 rows in set (0.00 sec)

关于python - 如何替换 python/mysql 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25786735/

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