Python PostgreSQL - Daten auswählen

Mit der SELECT-Anweisung können Sie den Inhalt einer vorhandenen Tabelle in PostgreSQL abrufen. Bei dieser Anweisung müssen Sie den Namen der Tabelle angeben. Der Inhalt wird in Tabellenform zurückgegeben, die als Ergebnismenge bezeichnet wird.

Syntax

Es folgt die Syntax der SELECT-Anweisung in PostgreSQL -

SELECT column1, column2, columnN FROM table_name;

Beispiel

Angenommen, wir haben mit der folgenden Abfrage eine Tabelle mit dem Namen CRICKETERS erstellt:

postgres=# CREATE TABLE CRICKETERS ( 
   First_Name VARCHAR(255), Last_Name VARCHAR(255), Age int, 
   Place_Of_Birth VARCHAR(255), Country VARCHAR(255)
);

CREATE TABLE

postgres=#

Und wenn wir 5 Datensätze mit INSERT-Anweisungen als - eingefügt haben

postgres=# insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
INSERT 0 1
postgres=# insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
INSERT 0 1
postgres=# insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
INSERT 0 1

Die folgende SELECT-Abfrage ruft die Werte der Spalten FIRST_NAME, LAST_NAME und COUNTRY aus der Tabelle CRICKETERS ab.

postgres=# SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
 first_name | last_name  | country
------------+------------+-------------
Shikhar     | Dhawan     | India
Jonathan    | Trott      | SouthAfrica
Kumara      | Sangakkara | Srilanka
Virat       | Kohli      | India
Rohit       | Sharma     | India
(5 rows)

Wenn Sie alle Spalten jedes Datensatzes abrufen möchten, müssen Sie die Namen der Spalten wie unten gezeigt durch "⚹" ersetzen.

postgres=# SELECT * FROM CRICKETERS;
first_name  | last_name  | age | place_of_birth | country
------------+------------+-----+----------------+-------------
Shikhar     | Dhawan     | 33  | Delhi          | India
Jonathan    | Trott      | 38  | CapeTown       | SouthAfrica
Kumara      | Sangakkara | 41  | Matale         | Srilanka
Virat       | Kohli      | 30  | Delhi          | India
Rohit       | Sharma     | 32  | Nagpur         | India
(5 rows)

postgres=#

Daten mit Python abrufen

READ Operation für eine beliebige Datenbank bedeutet, einige nützliche Informationen aus der Datenbank abzurufen. Sie können Daten aus PostgreSQL mit der von psycopg2 bereitgestellten Methode fetch () abrufen.

Die Cursor-Klasse bietet drei Methoden, nämlich fetchall (), fetchmany () und fetchone (), wobei

  • Die Methode fetchall () ruft alle Zeilen in der Ergebnismenge einer Abfrage ab und gibt sie als Liste von Tupeln zurück. (Wenn wir dies ausführen, nachdem wir einige Zeilen abgerufen haben, werden die verbleibenden zurückgegeben.)

  • Die Methode fetchone () ruft die nächste Zeile im Ergebnis einer Abfrage ab und gibt sie als Tupel zurück.

Note - Eine Ergebnismenge ist ein Objekt, das zurückgegeben wird, wenn ein Cursorobjekt zum Abfragen einer Tabelle verwendet wird.

Beispiel

Das folgende Python-Programm stellt eine Verbindung zu einer Datenbank mit dem Namen mydb von PostgreSQL her und ruft alle Datensätze aus einer Tabelle mit dem Namen EMPLOYEE ab.

import psycopg2

#establishing the connection
conn = psycopg2.connect(
   database="mydb", user='postgres', password='password', host='127.0.0.1', port= '5432'
)

#Setting auto commit false
conn.autocommit = True

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving data
cursor.execute('''SELECT * from EMPLOYEE''')

#Fetching 1st row from the table
result = cursor.fetchone();
print(result)

#Fetching 1st row from the table
result = cursor.fetchall();
print(result)

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Ausgabe

('Ramya', 'Rama priya', 27, 'F', 9000.0)
[
   ('Vinay', 'Battacharya', 20, 'M', 6000.0),
   ('Sharukh', 'Sheik', 25, 'M', 8300.0),
   ('Sarmista', 'Sharma', 26, 'F', 10000.0),
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]