Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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、SQL:如何在数据库中一次更新多个行和列?_Python_Database_Sqlite - Fatal编程技术网

Python、SQL:如何在数据库中一次更新多个行和列?

Python、SQL:如何在数据库中一次更新多个行和列?,python,database,sqlite,Python,Database,Sqlite,你好,斯塔克斯社区。 我正在使用SQLite和Python接口实现一个关系数据库。我的表由5个属性组成,大约有一百万个元组。 为了避免大量的数据库查询,我希望执行一个查询来更新多个元组的两个属性。这些更新的值取决于元组的主键,因此每个元组的值都不同 我正在Python 2.7中尝试以下内容: stmt= 'UPDATE Users SET Userid (?,?), Neighbours (?,?) WHERE Username IN (?,?)' cursor.execute(stmt, [(

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

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

stmt= 'UPDATE Users SET Userid (?,?), Neighbours (?,?) WHERE Username IN (?,?)'
cursor.execute(stmt, [(_id1, _Ngbr1, _name1), (_id2, _Ngbr2, _name2)])
换句话说,我试图通过用相应的值替换
邻居
用户ID
列来更新具有
主键的行。执行这两条语句将返回以下错误:

OperationalError: near "(": syntax error
我不愿意使用
executemany()
,因为我想减少数据库中的行程次数。 我已经为这个问题挣扎了几个小时,但在网络上找不到错误或替代方案。请帮忙


提前感谢。

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

无论如何,如果您确实想这样做,您可以使用(并且,为了避免重复):

更新用户
设置Userid=CASE用户名
什么时候?5点?1点
那是什么时候
完,,
邻居=案例用户名
什么时候?5点?3点
那是什么时候
完,,
其中,用户名为(?5,?6);

您能详细介绍一下“正确索引”部分吗?我应该怎么做?通过执行。但这不是问题的一部分。