Mehrere Tabellen mit einem Execute UPDATEN mit psycopg2

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Hallo Leute,

Kann es sein, dass man nicht gleichzeitig, sprich mit einer Abfrage an die Datenbank mehrere Tabellen Updaten kann?

Wie kann man überprüfen in Python ob ein UPDATE funktioniert hat?

Gibt es sowas wie cur.fetchall() bei einer Select Anweisung auch für UPDATES. Ich will nur eine Boolsche Variable oder irgendsowas in der Art als Rückgabewert, welcher in Python verarbeitbar ist.

Danke für eure Tipps,

Johannes
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

keboo hat geschrieben:mit einer Abfrage an die Datenbank mehrere Tabellen Updaten
[...]
Wie kann man überprüfen in Python ob ein UPDATE funktioniert hat?
Hallo Johannes!

Mit ``cur.rowcount`` bekommst du die Anzahl der geänderten/hinzugefügten Zeilen zurück.

Und mehrere Tabellen in einem Rutsch funktioniert auch:

Code: Alles auswählen

>>> import psycopg2
>>> conn = psycopg2.connect(
...     user = "testuser", password = "testuser",
...     database = "testdb", 
... )
>>> cur = conn.cursor()
>>> sql = """
... insert into contacts (number, name) values ('ddd', 'ddd');
... insert into calls (id, number) values (43, 'ddd');
... """
>>> cur.execute(sql)
>>> conn.commit()
>>> 
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

Ansonsten sollte man, wenn etwas schiefgelaufen ist, natürlich eine Ausnahme bekommen. Wenn man zum Beispiel mit dem ``UPDATE`` bzw. dem anschliessenden `commit()` irgendwelche "constraints" verletzen würde.
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Danke!

"cur.rowcount" war genau das was ich gesucht habe.

johannes
Antworten