Postgresql understøtter faktisk ikke returnering af flere resultatsæt fra en enkelt kommando. Hvis du sender dette input til psql:
BEGIN;
SELECT ...;
END;
det vil dele dette op på klientsiden og faktisk udføre tre sætninger, hvoraf kun den anden returnerer et resultatsæt.
"BEGIN" og "END" er kommandoer på SQL-niveau til at starte/afslutte en transaktion. (Der kan være en protokol på lavere niveau til at gøre dette, men jeg kan ikke huske det). Du vil sandsynligvis ikke udstede dem direkte, men snarere have din driver (psycopg2) til at håndtere dette. For eksempel, med Perl's DBI angiver jeg AutoCommit=>0, når jeg forbinder, og det udsteder implicit en "BEGIN" før min første kommando; og derefter "END" (eller "COMMIT" osv.), når jeg udtrykkeligt kalder $dbh->commit; Jeg gætter på, at Pythons DB-API fungerer ret sådan, da andre systemer, såsom JDBC, også gør det...