Postgresql sebenarnya tidak mendukung pengembalian beberapa set hasil dari satu perintah. Jika Anda meneruskan input ini ke psql:
BEGIN;
SELECT ...;
END;
itu akan membagi sisi klien ini dan benar-benar mengeksekusi tiga pernyataan, hanya yang kedua yang mengembalikan kumpulan hasil.
"BEGIN" dan "END" adalah perintah tingkat SQL untuk memulai/menyelesaikan transaksi. (Mungkin ada protokol tingkat yang lebih rendah untuk melakukan ini, tetapi saya tidak ingat). Anda mungkin tidak ingin mengeluarkannya secara langsung, tetapi meminta driver Anda (psycopg2) menangani ini. Misalnya, dengan DBI Perl saya menentukan AutoCommit=>0 saat menghubungkan dan secara implisit mengeluarkan "BEGIN" sebelum perintah pertama saya; dan kemudian "END" (atau "COMMIT" dll) ketika saya secara eksplisit memanggil $dbh->commit; Saya kira DB-API Python bekerja seperti ini, karena sistem lain seperti JDBC juga melakukannya...