Python: database e SQL
Il linguaggio di programmazione Python ha potenti funzionalità per la programmazione di database. Python supporta vari database come SQLite, MySQL, Oracle, Sybase, PostgreSQL, ecc. Python supporta anche Data Definition Language (DDL), Data Manipulation Language (DML) e Data Query Statements. Lo standard Python per le interfacce di database è l'API DB Python. La maggior parte delle interfacce di database Python aderisce a questo standard.
Ecco l'elenco delle interfacce di database Python disponibili: Interfacce di database Python e API . Devi scaricare un modulo API DB separato per ogni database a cui devi accedere.
In questo capitolo vedremo l'uso del database SQLite nel linguaggio di programmazione python. Viene fatto utilizzando il modulo sqlite3 integrato di Python. È necessario prima creare un oggetto connessione che rappresenta il database e quindi creare alcuni oggetti cursore per eseguire le istruzioni SQL.
Connetti 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 sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
Qui puoi anche fornire il nome del database come nome speciale :memory:per creare un database nella RAM. Ora, eseguiamo il programma sopra per creare il nostro databasetest.dbnella directory corrente. Puoi cambiare il tuo percorso secondo le tue esigenze. Conserva il codice sopra nel file sqlite.py ed eseguilo come mostrato di seguito. Se il database è stato creato correttamente, verrà visualizzato il seguente messaggio.
$chmod +x sqlite.py $./sqlite.py
Open database successfully
Crea una tabella
Il seguente programma Python verrà utilizzato per creare una tabella nel database precedentemente creato.
#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.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.close()
Quando il programma sopra viene eseguito, creerà la tabella AZIENDA nel tuo file test.db e mostrerà i seguenti messaggi -
Opened database successfully
Table created successfully
Inserisci operazione
Il seguente programma Python mostra come creare record nella tabella COMPANY creata nell'esempio precedente.
#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (1, 'Paul', 32, 'California', 20000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
conn.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 di cui sopra viene eseguito, creerà i record dati nella tabella AZIENDA e visualizzerà le seguenti due righe:
Opened database successfully
Records created successfully
Seleziona Operazione
Il seguente programma Python mostra come recuperare e visualizzare i record dalla tabella COMPANY creata nell'esempio precedente.
#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
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 precedente 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 di aggiornamento
Il seguente codice Python mostra come utilizzare l'istruzione UPDATE per aggiornare qualsiasi record e quindi recuperare e visualizzare i record aggiornati dalla tabella COMPANY.
#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit
print "Total number of rows updated :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
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 precedente 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
Elimina operazione
Il seguente codice Python mostra come utilizzare l'istruzione DELETE per eliminare qualsiasi record e quindi recuperare e visualizzare i record rimanenti dalla tabella COMPANY.
#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("DELETE from COMPANY where ID = 2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
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 precedente 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