Ich habe eine Frage zu Python und dem Modul sqlalchemy. Was ist das Äquivalent für cursor.rowcount
in der Sqlalchemy Python?Wie bekomme ich die Anzahl der betroffenen Zeilen in sqlalchemy?
Antwort
Obwohl es nicht wirklich in der Dokumentation angegeben ist, hat ein ResultProxy
Objekt auch eine rowcount
Eigenschaft.
rowcount
ist nicht die Anzahl der betroffenen Zeilen. Es ist die Anzahl der übereinstimmenden Zeilen. Sehen Sie, was doc sagt
Dieses Attribut gibt die Anzahl der Zeilen zurück abgestimmt, die nicht unbedingt das gleiche wie die Anzahl der Zeilen, die tatsächlich waren modifizierte - eine UPDATE-Anweisung, zum Beispiel, kann kein Netz haben Änderung an einer gegebenen Zeile, wenn die angegebenen SET-Werte dieselben sind wie die bereits in der Zeile vorhandenen. Solch eine Zeile würde übereinstimmen, aber nicht geändert werden. Auf Backends, die beide Stile, wie MySQL verfügen, ist
rowcount
standardmäßig konfiguriert, um die Anzahl in allen Fällen
Also für die beiden folgenden Szenarien zurück rowcount
1
berichten. Wegen Rows matched: 1
eine Zeile mit
update
Anweisung geändert.Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
gleiche
update
Anweisung ausgeführt wird.Query OK, 0 row affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0
'rowcount' ist eigentlich nicht die Anzahl der betroffenen Zeilen * *. Siehe meine Antwort für Details. –
Die Dokumentation enthält in diesen Tagen 'rowcount': http://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.ResultProxy.rowcount –