PostgreSQL - Interfaccia Python
Installazione
PostgreSQL può essere integrato con Python utilizzando il modulo psycopg2. sycopg2 è un adattatore per database PostgreSQL per il linguaggio di programmazione Python. psycopg2 è stato scritto con l'obiettivo di essere molto piccolo e veloce e stabile come una roccia. Non è necessario installare questo modulo separatamente perché viene fornito, per impostazione predefinita, insieme alla versione 2.5.x di Python in poi.
Se non lo hai installato sulla tua macchina, puoi usare il comando yum per installarlo come segue:
$yum install python-psycopg2
Per utilizzare il modulo psycopg2, devi prima creare un oggetto Connection che rappresenti il database e poi opzionalmente puoi creare un oggetto cursore che ti aiuterà nell'esecuzione di tutte le istruzioni SQL.
API del modulo Python psycopg2
Le seguenti sono importanti routine del modulo psycopg2, che possono essere sufficienti per il tuo requisito per lavorare con il database PostgreSQL dal tuo programma Python. Se stai cercando un'applicazione più sofisticata, puoi esaminare la documentazione ufficiale del modulo Python psycopg2.
S. No. | API e descrizione |
---|---|
1 | psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432") Questa API apre una connessione al database PostgreSQL. Se il database viene aperto correttamente, restituisce un oggetto di connessione. |
2 | connection.cursor() Questa routine crea un file cursor che verrà utilizzato durante la programmazione del database con Python. |
3 | cursor.execute(sql [, optional parameters]) Questa routine esegue un'istruzione SQL. L'istruzione SQL può essere parametrizzata (cioè, segnaposto invece di letterali SQL). Il modulo psycopg2 supporta segnaposto utilizzando il segno% s Ad esempio: cursor.execute ("insert into people values (% s,% s)", (who, age)) |
4 | cursor.executemany(sql, seq_of_parameters) Questa routine esegue un comando SQL su tutte le sequenze di parametri o le mappature trovate nella sequenza sql. |
5 | cursor.callproc(procname[, parameters]) Questa routine esegue una procedura del database memorizzato con il nome specificato. La sequenza di parametri deve contenere una voce per ogni argomento previsto dalla procedura. |
6 | cursor.rowcount Questo attributo di sola lettura che restituisce il numero totale di righe del database che sono state modificate, inserite o eliminate dall'ultima esecuzione * (). |
7 | connection.commit() Questo metodo esegue il commit della transazione corrente. Se non chiami questo metodo, tutto ciò che hai fatto dall'ultima chiamata a commit () non è visibile da altre connessioni al database. |
8 | connection.rollback() Questo metodo ripristina tutte le modifiche al database dall'ultima chiamata a commit (). |
9 | connection.close() Questo metodo chiude la connessione al database. Nota che questo non chiama automaticamente commit (). Se chiudi semplicemente la connessione al database senza chiamare prima commit (), le tue modifiche andranno perse! |
10 | cursor.fetchone() Questo metodo recupera la riga successiva di un set di risultati di query, restituendo una singola sequenza o Nessuno quando non sono disponibili più dati. |
11 | cursor.fetchmany([size=cursor.arraysize]) Questa routine recupera la serie successiva di righe del risultato di una query, restituendo un elenco. Quando non sono disponibili più righe, viene restituito un elenco vuoto. Il metodo cerca di recuperare tutte le righe indicate dal parametro size. |
12 | cursor.fetchall() Questa routine recupera tutte le righe (rimanenti) di un risultato di query, restituendo un elenco. Quando non sono disponibili righe, viene restituito un elenco vuoto. |
Connessione al database
Il seguente codice Python mostra come connettersi a un database esistente. Se il database non esiste, verrà creato e infine verrà restituito un oggetto database.
#!/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"
Qui puoi anche fornire database testdb come nome e se il database viene aperto correttamente, verrà visualizzato il seguente messaggio:
Open database successfully
Crea una tabella
Il seguente programma Python verrà utilizzato per creare una tabella nel database creato in precedenza:
#!/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()
Quando il programma sopra indicato viene eseguito, creerà la tabella COMPANY nel tuo file test.db e mostrerà i seguenti messaggi -
Opened database successfully
Table created successfully
Operazione INSERT
Il seguente programma Python mostra come possiamo creare record nella nostra tabella COMPANY creata nell'esempio sopra:
#!/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()
Quando il programma sopra indicato viene eseguito, creerà dati record nella tabella AZIENDA e visualizzerà le seguenti due righe:
Opened database successfully
Records created successfully
Operazione SELECT
Il seguente programma Python mostra come possiamo recuperare e visualizzare i record dalla nostra tabella COMPANY creata nell'esempio precedente:
#!/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()
Quando il programma sopra indicato viene eseguito, produrrà il seguente risultato:
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
Operazione UPDATE
Il seguente codice Python mostra come possiamo utilizzare l'istruzione UPDATE per aggiornare qualsiasi record e quindi recuperare e visualizzare i record aggiornati dalla nostra tabella COMPANY -
#!/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()
Quando il programma sopra indicato viene eseguito, produrrà il seguente risultato:
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
Operazione DELETE
Il seguente codice Python mostra come possiamo utilizzare l'istruzione DELETE per eliminare qualsiasi record e quindi recuperare e visualizzare i record rimanenti dalla nostra tabella COMPANY -
#!/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()
Quando il programma sopra indicato viene eseguito, produrrà il seguente risultato:
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