PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

SQL pobiera dane z BEGIN; ...; KONIEC; blok w pytonie

Postgresql w rzeczywistości nie obsługuje zwracania wielu zestawów wyników z jednego polecenia. Jeśli przekażesz te dane wejściowe do psql:

BEGIN;
SELECT ...;
END;

podzieli to po stronie klienta i faktycznie wykona trzy instrukcje, z których tylko druga zwraca zestaw wyników.

"POCZĄTEK" i "KONIEC" to polecenia na poziomie SQL do rozpoczęcia/zakończenia transakcji. (Może istnieć protokół niższego poziomu do robienia tego, ale nie pamiętam). Prawdopodobnie nie chcesz wydawać ich bezpośrednio, ale raczej pozwól swojemu sterownikowi (psycopg2) się tym zająć. Na przykład, z DBI Perla określam AutoCommit=>0 podczas łączenia i niejawnie wydaje "POCZĄTEK" przed moim pierwszym poleceniem; a następnie "END" (lub "COMMIT" itp.), gdy jawnie wywołam $dbh->commit; Wydaje mi się, że DB-API Pythona działa raczej w ten sposób, ponieważ inne systemy, takie jak JDBC, również działają...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. x to procedura, użyj połączenia, gdy już używam połączenia

  2. Jak mieć klucz obcy wskazujący na dwa klucze podstawowe?

  3. Usuwanie przy użyciu CTE wolniej niż przy użyciu tabeli tymczasowej w Postgresie

  4. wybrać do aktualizacji za pomocą JDBC?

  5. Jak filtrować zapytania postgis na podstawie ST_GeometryType?