gpt4 book ai didi

python ,SQL : How to update multiple rows and columns in a single trip around the database?

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:00 25 4
gpt4 key购买 nike

你好 StackEx 社区。我正在使用与 Python 接口(interface)的 SQLite 实现关系数据库。我的表由 5 个属性和大约一百万个元组组成。为了避免大量的数据库查询,我希望执行一个更新多个元组的 2 个属性的查询。这些更新的值取决于元组的 Primary Key 值,因此每个元组都不同。

我正在 Python 2.7 中尝试类似以下内容:

stmt= 'UPDATE Users SET Userid (?,?), Neighbours (?,?) WHERE Username IN (?,?)'
cursor.execute(stmt, [(_id1, _Ngbr1, _name1), (_id2, _Ngbr2, _name2)])

换句话说,我试图通过替换 Neighbours< 来更新具有 Primary Keys _name1_name2 的行Userid 列具有相应的值。两条语句的执行返回如下错误:

OperationalError: near "(": syntax error

我不愿意使用 executemany() 因为我想减少跨数据库的次数。我现在正在为这个问题苦苦挣扎几个小时,但无法找出错误或网络上的替代方法。请帮忙。

提前致谢。

最佳答案

如果用于查找要更新的行的列已正确建立索引,那么执行多个 UPDATE 语句可能比单个语句更有效,因为在后一种情况下,数据库可能需要扫描所有行。

无论如何,如果你真的想这样做,你可以使用CASE expressions (和 explicitly numbered parameters ,以避免重复):

UPDATE Users
SET Userid = CASE Username
WHEN ?5 THEN ?1
WHEN ?6 THEN ?2
END,
Neighbours = CASE Username
WHEN ?5 THEN ?3
WHEN ?6 THEN ?4
END,
WHERE Username IN (?5, ?6);

关于 python ,SQL : How to update multiple rows and columns in a single trip around the database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34132132/

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