2017-07-12 3 views
0

Ich habe in ResultProxy-Klasse untersucht, die das Ergebnis der execute Methode scheint.Woher weiß ich, ob meine Execute-Methode erfolgreich gelöscht wurde?

Ich begann mit einer einfachen Auswahl und nur über die Ergebnisse iteriert. Die Sache, über die ich neugierig war, war Update und Löschen. Woher weiß ich, ob das Löschen erfolgreich ist?

Wenn es in Python zu tun, würde ich so etwas wie hat:

result = session.execute("delete from A where id = 4") 

und es läuft, aber ich habe keine Ahnung, es erfolgreich andere war als die Existenz von id = 4 abzufragen versucht.

Als ich die Klasse ResultProxy ansah, sah ich nichts in Bezug auf isSuccessful oder irgendein anderes Stichwort, das zu mir sprang.

Wie ich schon sagte, ich iteriere normalerweise nur über das Set für Selects, kann das aber nicht genau herausfinden.

+0

Durch erfolgreich, meinst du, dass es etwas gelöscht hat? Oder nur, dass es ausgeführt wurde? – univerio

+0

Artikel wurde erfolgreich gelöscht. – Fallenreaper

Antwort

2

Sie am rowcount Eigenschaft aussehen:

if result.rowcount > 0: 
    print("deleted something") 
else: 
    print("nothing deleted") 

Beachten Sie, dass die Genauigkeit dieses Attribut auf der Datenbank und Ihre Abfrage abhängt. Für SQLite insbesondere und einfache DELETE FROM foo WHERE bar = :baz Abfragen sollte es funktionieren.

+0

Also, in diesem Fall würde "Ergebnis" eine Liste der gelöschten Elemente sein? – Fallenreaper

+0

@Fallenreaper Nr. 'Result' ist das Ergebnis von' session.execute() ', einer 'ResultProxy'-Instanz. Bei 'DELETE'-Abfragen ist' result' ein leerer iterabler Wert. – univerio

+0

Ah, ok. rowcount ist die Anzahl der betroffenen Zeilen. Cool Danke. – Fallenreaper

Verwandte Themen