sql >> Databáze >  >> RDS >> PostgreSQL

SQL získat data z BEGIN; ...; KONEC; blok v pythonu

Postgresql ve skutečnosti nepodporuje vrácení více sad výsledků z jednoho příkazu. Pokud tento vstup předáte do psql:

BEGIN;
SELECT ...;
END;

rozdělí to na stranu klienta a ve skutečnosti provede tři příkazy, z nichž pouze druhý vrátí sadu výsledků.

"BEGIN" a "END" jsou příkazy na úrovni SQL pro zahájení/dokončení transakce. (Může pro to existovat protokol nižší úrovně, ale nepamatuji si to). Pravděpodobně je nechcete vydávat přímo, ale požádejte o to váš ovladač (psycopg2). Například pomocí DBI Perlu zadávám při připojování AutoCommit=>0 a před mým prvním příkazem to implicitně vydá "BEGIN"; a poté "END" (nebo "COMMIT" atd.), když výslovně zavolám $dbh->commit; Myslím, že DB-API Pythonu funguje spíše takto, protože jiné systémy, jako je JDBC, to dělají také...



  1. Java spuštěná spouštěčem MySQL

  2. ukládání dat base64 – problém s velikostí řádku je příliš velký

  3. Spouštěče události ROLLBACK v postgresql

  4. Názvy dynamických proměnných v MySQL