User Tools

Site Tools


appunti3s:python_e_database

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
appunti3s:python_e_database [2018/10/18 21:55] profproappunti3s:python_e_database [2020/06/08 22:19] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Python e database ======
 +
 +>> indice: [[appunti3s:linguaggio_python]]
 +
 +Quando i dati da gestire sono numerosi e collegati invece dei file si preferisce usare i database. 
 +L'inteprete Python viene fornito incluso con un modulo //sqlite3// che permette di accedere ai dati salvati nel formato SQLite3
 +
 +http://docs.python.org/library/sqlite3.html
 +
 +In alternativa si possono installare altri moduli che permettono di usare anche gli altri tipi di database:
 +  *  con il modulo //pyodbc// si può accedere a tutti gli altri tipi di database (MySQL, PostGreSQL, MS Access, Oracle) http://en.wikibooks.org/wiki/Python_Programming/Database_Programming
 +  * con il modulo //MySQLdb// ci si può collegare ai DBMS MySQL
 +  * con il modulo //psycopg2// ci si può collegare ai DBMS PostGreSQL
 +  * http://en.wikibooks.org/wiki/Python_Programming/Databases
 +
 +===== SQLite3 =====
 +
 +SQLite3 ha il pregio di non richiedere nessun software DBMS Server, ma di poter accedere direttamente ai dati memorizzati come un file locale con estensione .sq3 
 +
 +AGGIUNGERE un'immagine che rappresenta il precedente concetto
 +
 +Uno dei limiti di SQLite3 è di non avere una gestione dei permessi di accesso e degli utenti e che, una volta creata una tabella, la sua struttura non può essere modificata. 
 +I tipi di dato supportati sono: TEXT, INTEGER, REAL, BLOB and NULL
 +
 +SQLite3 apre implicitamente una transazione (begin) prima di ogni INSERT/UPDATE/DELETE che viene implicitamente chiusa (commit) subito dopo (a meno che vi sia SELECT). Per avere apertura e chiusura automatica (autocommit mode), si deve impostare il parametro di connessione //isolation_level// a //None//.
 +<file python db1.py>
 +import sqlite3
 +
 +connessione = sqlite3.connect('example.sq3')
 +
 +# ogni cursore consente di eseguire un'operazione indipendente sullo stesso db
 +c = connessione.cursor() 
 +
 +c.execute("CREATE TABLE clienti (cf text, nome text, cognome text);")
 +# execute consente di eseguire un'istruzione SQL 
 +# lancia un'eccezione se si eseguono piu' istruzioni
 +
 +connessione.close()
 +</file>
 +
 +
 +<file python db2.py>
 +import sqlite3
 +
 +connessione = sqlite3.connect('example.sq3')
 +c = connessione.cursor()
 +
 +t = ('Rossi',) # tecnica sostituzione di parametro
 +c.execute('SELECT * FROM clienti WHERE cognome=?', t)
 +
 +riga = c.fetchone()
 +print riga.keys()  # nomi delle colonne
 +print riga
 +
 +connessione.close()
 +</file>
 +
  
appunti3s/python_e_database.txt · Last modified: 2020/06/08 22:19 by 127.0.0.1