PostgreSQL - Python-Schnittstelle

Installation

PostgreSQL kann mithilfe des Psycopg2-Moduls in Python integriert werden. sycopg2 ist ein PostgreSQL-Datenbankadapter für die Programmiersprache Python. psycopg2 wurde mit dem Ziel geschrieben, sehr klein und schnell und steinstabil zu sein. Sie müssen dieses Modul nicht separat installieren, da es standardmäßig zusammen mit Python Version 2.5.x ausgeliefert wird.

Wenn Sie es nicht auf Ihrem Computer installiert haben, können Sie es mit dem Befehl yum wie folgt installieren:

$yum install python-psycopg2

Um das psycopg2-Modul verwenden zu können, müssen Sie zuerst ein Verbindungsobjekt erstellen, das die Datenbank darstellt. Anschließend können Sie optional ein Cursorobjekt erstellen, das Sie bei der Ausführung aller SQL-Anweisungen unterstützt.

Python-Psycopg2-Modul-APIs

Im Folgenden finden Sie wichtige Routinen für Psycopg2-Module, die für die Arbeit mit der PostgreSQL-Datenbank Ihres Python-Programms ausreichen können. Wenn Sie nach einer anspruchsvolleren Anwendung suchen, können Sie die offizielle Dokumentation des Python psycopg2-Moduls einsehen.

S. Nr. API & Beschreibung
1

psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432")

Diese API öffnet eine Verbindung zur PostgreSQL-Datenbank. Wenn die Datenbank erfolgreich geöffnet wurde, wird ein Verbindungsobjekt zurückgegeben.

2

connection.cursor()

Diese Routine erstellt eine cursor Dies wird während Ihrer gesamten Datenbankprogrammierung mit Python verwendet.

3

cursor.execute(sql [, optional parameters])

Diese Routine führt eine SQL-Anweisung aus. Die SQL-Anweisung kann parametrisiert werden (dh Platzhalter anstelle von SQL-Literalen). Das psycopg2-Modul unterstützt Platzhalter mit% s-Zeichen

Zum Beispiel: cursor.execute ("In Personenwerte einfügen (% s,% s)", (wer, Alter))

4

cursor.executemany(sql, seq_of_parameters)

Diese Routine führt einen SQL-Befehl für alle Parametersequenzen oder Zuordnungen aus, die in der Sequenz sql gefunden werden.

5

cursor.callproc(procname[, parameters])

Diese Routine führt eine gespeicherte Datenbankprozedur mit dem angegebenen Namen aus. Die Folge von Parametern muss einen Eintrag für jedes Argument enthalten, das die Prozedur erwartet.

6

cursor.rowcount

Dieses schreibgeschützte Attribut gibt die Gesamtzahl der Datenbankzeilen zurück, die bis zur letzten Ausführung * () geändert, eingefügt oder gelöscht wurden.

7

connection.commit()

Diese Methode schreibt die aktuelle Transaktion fest. Wenn Sie diese Methode nicht aufrufen, ist alles, was Sie seit dem letzten Aufruf von commit () getan haben, für andere Datenbankverbindungen nicht sichtbar.

8

connection.rollback()

Diese Methode setzt alle Änderungen an der Datenbank seit dem letzten Aufruf von commit () zurück.

9

connection.close()

Diese Methode schließt die Datenbankverbindung. Beachten Sie, dass dies nicht automatisch commit () aufruft. Wenn Sie nur Ihre Datenbankverbindung schließen, ohne zuerst commit () aufzurufen, gehen Ihre Änderungen verloren!

10

cursor.fetchone()

Diese Methode ruft die nächste Zeile einer Abfrageergebnismenge ab und gibt eine einzelne Sequenz zurück oder Keine, wenn keine weiteren Daten verfügbar sind.

11

cursor.fetchmany([size=cursor.arraysize])

Diese Routine ruft den nächsten Satz von Zeilen eines Abfrageergebnisses ab und gibt eine Liste zurück. Eine leere Liste wird zurückgegeben, wenn keine Zeilen mehr verfügbar sind. Die Methode versucht, so viele Zeilen abzurufen, wie durch den Größenparameter angegeben.

12

cursor.fetchall()

Diese Routine ruft alle (verbleibenden) Zeilen eines Abfrageergebnisses ab und gibt eine Liste zurück. Eine leere Liste wird zurückgegeben, wenn keine Zeilen verfügbar sind.

Verbindung zur Datenbank herstellen

Der folgende Python-Code zeigt, wie Sie eine Verbindung zu einer vorhandenen Datenbank herstellen. Wenn die Datenbank nicht vorhanden ist, wird sie erstellt und schließlich wird ein Datenbankobjekt zurückgegeben.

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")

print "Opened database successfully"

Hier können Sie auch eine Datenbank angeben testdb als Name und wenn die Datenbank erfolgreich geöffnet wurde, wird die folgende Meldung angezeigt:

Open database successfully

Erstellen Sie eine Tabelle

Das folgende Python-Programm wird verwendet, um eine Tabelle in einer zuvor erstellten Datenbank zu erstellen:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()
cur.execute('''CREATE TABLE COMPANY
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);''')
print "Table created successfully"

conn.commit()
conn.close()

Wenn das oben angegebene Programm ausgeführt wird, wird eine COMPANY-Tabelle in Ihrem erstellt test.db und es werden die folgenden Meldungen angezeigt -

Opened database successfully
Table created successfully

INSERT-Betrieb

Das folgende Python-Programm zeigt, wie wir Datensätze in unserer im obigen Beispiel erstellten COMPANY-Tabelle erstellen können:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");

conn.commit()
print "Records created successfully";
conn.close()

Wenn das oben angegebene Programm ausgeführt wird, werden die angegebenen Datensätze in der COMPANY-Tabelle erstellt und die folgenden zwei Zeilen angezeigt:

Opened database successfully
Records created successfully

SELECT-Betrieb

Das folgende Python-Programm zeigt, wie wir Datensätze aus unserer im obigen Beispiel erstellten COMPANY-Tabelle abrufen und anzeigen können:

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

Wenn das oben angegebene Programm ausgeführt wird, wird das folgende Ergebnis erzeugt:

Opened database successfully
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

UPDATE-Betrieb

Der folgende Python-Code zeigt, wie wir mit der UPDATE-Anweisung jeden Datensatz aktualisieren und dann aktualisierte Datensätze aus unserer COMPANY-Tabelle abrufen und anzeigen können.

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit()
print "Total number of rows updated :", cur.rowcount

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

Wenn das oben angegebene Programm ausgeführt wird, wird das folgende Ergebnis erzeugt:

Opened database successfully
Total number of rows updated : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  25000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

DELETE-Betrieb

Der folgende Python-Code zeigt, wie wir mit der DELETE-Anweisung jeden Datensatz löschen und dann die verbleibenden Datensätze aus unserer COMPANY-Tabelle abrufen und anzeigen können.

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", cur.rowcount

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

Wenn das oben angegebene Programm ausgeführt wird, wird das folgende Ergebnis erzeugt:

Opened database successfully
Total number of rows deleted : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully