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