sql >> Databasteknik >  >> RDS >> PostgreSQL

SQL hämta data från BEGIN; ...; SLUTET; block i python

Postgresql stöder faktiskt inte att returnera flera resultatuppsättningar från ett enda kommando. Om du skickar denna ingång till psql:

BEGIN;
SELECT ...;
END;

det kommer att dela upp den här klientsidan och faktiskt köra tre satser, varav endast den andra returnerar en resultatuppsättning.

"BEGIN" och "END" är kommandon på SQL-nivå för att starta/slutföra en transaktion. (Det kan finnas ett protokoll på lägre nivå för att göra detta men jag kommer inte ihåg). Du vill förmodligen inte utfärda dem direkt, utan hellre låta din drivrutin (psycopg2) hantera detta. Till exempel, med Perls DBI anger jag AutoCommit=>0 när jag ansluter och det utfärdar implicit ett "BEGIN" före mitt första kommando; och sedan "END" (eller "COMMIT" etc) när jag uttryckligen anropar $dbh->commit; Jag antar att Pythons DB-API fungerar ungefär så här, eftersom andra system som JDBC också gör det...



  1. Hur man duplicerar en MySQL-databas på samma server

  2. Bilduppladdning till MySQL-databas blob i codeigniter

  3. java.lang.ClassCastException:oracle.sql.BLOB kan inte castas till oracle.sql.BLOB

  4. VÄLJ och lista barn och förälder