Dies ist eine alte Version des Dokuments!
Server-side binding
Technik bei der das SQL-Statement und die Werte getrennt an die Datenbank gesendet werden
Ziel ist u.a. die Vermeidung von sql-Injection durch Trennung von Statement und Werten
ist auf Statement limitiert
conn.execute(insert into whatever values(%s); select * from somethingelse where id = %s, ("firstvalue", "secondvalue"))
obiges funktioniert nicht
wenn mehrere Statements vorhanden sind, aber nur eins Server-side-binding nutzt funktioniert das
Mischen von Transaktions- und Nicht-Transaktionsstatements in einem execute
per Default ist für execute Autocommit eingestellt → man braucht also die Transaktion nicht selbst zu commiten, das macht die Datenbank für einen
die meisten Kommandos (auch DDL-Kommandos) können in einer Transaktion ausgeführt werden
Postgres fasst intern alle Statements eines cursor()-Aufrufs zu einer Transaktion zusammen
^ deswegen kann man im gleichen execute()-Aufruf keine Kommandos mischen die Transaktionen unterstützen und solche die es nicht tun