我有一个关于Python和sqlalchemy模块的问题。 sqlalchemy Python中cursor.rowcount
的等价物是什么?
答案 0 :(得分:25)
虽然文档中没有真正说明,但ResultProxy
对象也有rowcount
属性。
答案 1 :(得分:6)
rowcount
不受影响的行数。它是匹配行的数量。查看doc说的内容
此属性返回匹配的行数,这些行不一定与实际修改的行数相同 - 例如,UPDATE语句可能如果给定的SET值与已存在的行中的SET值相同,则在给定行上没有净变化。这样的行将匹配但不会被修改。在具有两种样式(例如MySQL)的后端上,默认情况下配置
rowcount
以在所有情况下返回匹配计数
因此,对于以下两种情况,rowcount
都会报告1
。因为Rows matched: 1
使用update
语句更改了一行。
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
执行相同的update
语句。
Query OK, 0 row affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
答案 2 :(得分:0)
Shiplu所说的当然是正确的,但是,要回答这个问题,在许多情况下,可以通过在WHERE子句中包含值不同的条件来轻松地使匹配的列等于更改的列,即:>
delete3(_,[],[]).
delete3(X,[X|T],R):- delete3(X,T,R).
delete3(X,[H|T],[H|R]) :- delete3(X,T,R).
remove_duplicates([],[]).
remove_duplicates([H|T], [H|R]) :-
member(H,T),!,
delete3(H,T,R1),
remove_duplicates(R1,R).
remove_duplicates([H|T],[H|R]):-
remove_duplicates(T,R).
UPDATE table
SET column_to_be_changed = "something different"
WHERE column_to_be_changed != "something different" AND [...your other conditions...]
将返回受影响的行数,因为它等于匹配的行数。