sql >> Base de Datos >  >> RDS >> PostgreSQL

SQL obtiene datos de BEGIN; ...; FINAL; bloque en python

Postgresql en realidad no admite la devolución de múltiples conjuntos de resultados desde un solo comando. Si pasa esta entrada a psql:

BEGIN;
SELECT ...;
END;

dividirá esto del lado del cliente y ejecutará tres instrucciones, solo la segunda de las cuales arrojará un conjunto de resultados.

"BEGIN" y "END" son comandos de nivel SQL para iniciar/finalizar una transacción. (Puede haber un protocolo de nivel inferior para hacer esto, pero no lo recuerdo). Probablemente no quiera emitirlos directamente, sino que su controlador (psycopg2) maneje esto. Por ejemplo, con DBI de Perl, especifico AutoCommit=>0 cuando me conecto e implícitamente emite un "BEGIN" antes de mi primer comando; y luego "END" (o "COMMIT", etc.) cuando llamo explícitamente a $dbh->commit; Supongo que la DB-API de Python funciona así, ya que otros sistemas como JDBC también lo hacen...