PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

SQL extrait les données de BEGIN ; ... ; FIN; bloc en python

Postgresql ne prend pas en charge le renvoi de plusieurs ensembles de résultats à partir d'une seule commande. Si vous transmettez cette entrée à psql :

BEGIN;
SELECT ...;
END;

il divisera cela côté client et exécutera en fait trois instructions, dont seule la seconde renvoie un ensemble de résultats.

"BEGIN" et "END" sont des commandes de niveau SQL pour démarrer/terminer une transaction. (Il peut y avoir un protocole de niveau inférieur pour cela, mais je ne m'en souviens pas). Vous ne voulez probablement pas les émettre directement, mais plutôt laisser votre pilote (psycopg2) gérer cela. Par exemple, avec le DBI de Perl, je spécifie AutoCommit=>0 lors de la connexion et il émet implicitement un "BEGIN" avant ma première commande ; puis "END" (ou "COMMIT", etc.) lorsque j'appelle explicitement $dbh->commit ; Je suppose que l'API DB de Python fonctionne un peu comme ça, puisque d'autres systèmes tels que JDBC le font aussi...