Postgresql фактически не поддерживает возврат нескольких наборов результатов из одной команды.Если вы передадите этот ввод в psql:
BEGIN;
SELECT ...;
END;
, он разделит это на стороне клиента и фактически выполнит три оператора, только вторая из которых возвращает набор результатов.
"BEGIN"и «END» - команды уровня SQL для запуска / завершения транзакции.(Для этого может быть протокол более низкого уровня, но я не могу вспомнить).Вы, вероятно, не хотите выдавать их напрямую, а ваш драйвер (psycopg2) справится с этим.Например, в DBI Perl при подключении я указываю AutoCommit => 0, и он неявно выдает «BEGIN» перед моей первой командой;и затем "END" (или "COMMIT" и т. д.), когда я явно вызываю $ dbh-> commit;Я предполагаю, что DB-API Python работает так же, как и другие системы, такие как JDBC ...