English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SQLite3 può essere integrato con Python tramite il modulo sqlite3. Il modulo sqlite3 è stato scritto da Gerhard Haring. Fornisce un'interfaccia SQL compatibile con lo standard DB-API 2.0 descritto nel PEP 249. Non è necessario installare questo modulo separatamente, poiché è incluso di default in tutte le versioni di Python 2.5.x e superiori.
Per utilizzare il modulo sqlite3, devi prima creare un oggetto di connessione che rappresenta il database, e poi puoi creare a tua scelta un oggetto cursore, che ti aiuterà a eseguire tutte le istruzioni SQL.
Di seguito sono riportati i moduli importanti di sqlite3, che possono soddisfare le tue esigenze di utilizzo del database SQLite nei programmi Python. Se hai bisogno di ulteriori dettagli, consulta la documentazione ufficiale del modulo sqlite3 di Python.
Numero di序号 | API & Descrizione |
---|---|
1 | sqlite3.connect(database [,timeout ,other optional arguments]) L'API apre un collegamento alla file di database SQLite denominata database. Puoi usare ":memory:" per aprire una connessione alla database nella RAM invece di su disco. Se il database viene aperto con successo, viene restituito un oggetto di connessione. Quando un database viene acceduto da più connessioni e una di queste lo modifica, il database SQLite viene bloccato fino a quando l'operazione non viene confermata. Il parametro timeout indica la durata di attesa della connessione per ottenere il blocco, fino a quando non si verifica un'interruzione anormale della connessione. Il valore predefinito del parametro timeout è 5.0 (5 secondi). Se il nome del database fornito filename non esiste, questa chiamata creerà un database. Se non si desidera creare un database nella directory corrente, è possibile specificare un nome di file con percorso, in modo da poter creare un database in qualsiasi luogo. |
2 | connection.cursor([cursorClass]) Questa routine crea un cursorQuesta metodo, utilizzato nel programming di database Python, accetta un singolo parametro opzionale cursorClass. Se fornito, questo parametro deve essere una classe cursor personalizzata che estende sqlite3.Cursor. |
3 | cursor.execute(sql [, optional parameters]) Questa routine esegue un'istruzione SQL. L'istruzione SQL può essere parametrizzata (cioè utilizzare placeholder al posto del testo SQL). Il modulo sqlite3 supporta due tipi di placeholder: il punto interrogativo e i placeholder con nome (stili di nomi). Ad esempio: cursor.execute("insert into people values (?, ?)", (who, age)) |
4 | connection.execute(sql [, optional parameters]) Questa routine è un alias per il metodo fornito dall'oggetto cursor (cursor) che crea un oggetto cursor intermedio, poi chiama il metodo execute del cursor con i parametri forniti. |
5 | cursor.executemany(sql, seq_of_parameters) Questa routine esegue un comando SQL per tutti i parametri o mappature in seq_of_parameters. |
6 | connection.executemany(sql[, parameters]) Questa routine è un alias per un oggetto cursor intermedio creato dalla chiamata al metodo cursor, poi chiamato con i parametri forniti. |
7 | cursor.executescript(sql_script) Questa routine, una volta ricevuta lo script, esegue più istruzioni SQL. Prima esegue l'istruzione COMMIT, poi esegue lo script SQL passato come parametro. Tutte le istruzioni SQL devono essere separate da un punto e virgola ;. |
8 | connection.executescript(sql_script) Questa routine è un alias per un oggetto cursore intermedio creato dalla chiamata al metodo cursor, poi chiamato il metodo executescript del cursore con i parametri dati. |
9 | connection.total_changes() Questa routine restituisce il numero totale di righe modificate, inserite o eliminate dal database dal momento in cui è stata aperta la connessione. |
10 | connection.commit() Questo metodo conferma la transazione corrente. Se non chiami questo metodo, qualsiasi azione fatta da te dall'ultima chiamata a commit() non sarà visibile alle altre connessioni database. |
11 | connection.rollback() Questo metodo annulla tutte le modifiche fatte al database dall'ultima chiamata a commit(). |
12 | connection.close() Questo metodo chiude la connessione al database. Nota che non chiama automaticamente commit(). Se non hai chiamato il metodo commit() prima, chiudere la connessione al database causerà la perdita di tutte le modifiche che hai fatto! |
13 | cursor.fetchone() Questo metodo recupera la prossima riga del set di query, restituendo una sequenza singola. Quando non ci sono più dati disponibili, viene restituito None. |
14 | cursor.fetchmany([size=cursor.arraysize]) Questa metodo recupera il prossimo gruppo di righe del set di query, restituendo una lista. Quando non ci sono più righe disponibili, viene restituita una lista vuota. Questo metodo tenta di ottenere il numero massimo di righe specificato dal parametro size. |
15 | cursor.fetchall() Questa routine recupera tutte le righe (rimanenti) del set di query, restituendo una lista. Quando non ci sono più righe disponibili, viene restituita una lista vuota. |
Il codice Python seguente mostra come connettersi a un database esistente. Se il database non esiste, verrà creato e infine restituito un oggetto database.
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print "Database aperto con successo"
In questo punto, puoi anche copiare il nome del database in un nome specifico :memory:In questo modo, verrà creata una database nella RAM. Ora, eseguiamo il programma sopra per creare la nostra database nel percorso corrente test.dbPuoi modificare il percorso secondo necessità. Salva il codice sopra nel file sqlite.py e esegui come segue. Se il database viene creato con successo, verrà visualizzato il messaggio seguente:
$chmod +x sqlite.py $./sqlite.py Database aperto con successo
Il seguente segmento di codice Python verrà utilizzato per creare una tabella nel database creato in precedenza:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') print "Database aperto con successo" c = conn.cursor() c.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 viene eseguito il programma sopra, creerà una tabella nel database: test.db Creazione della tabella COMPANY nel database e visualizzazione del messaggio seguente:
Database aperto con successo Tabella creata con successo
Il seguente programma Python mostra come creare registrazioni nella tabella COMPANY creata in precedenza:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() print "Database aperto con successo" c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (1, 'Paul', 32, 'California', 20000.00 )") c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (2, 'Allen', 25, 'Texas', 15000.00 )") c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )") c.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 viene eseguito il programma sopra, creerà le registrazioni nella tabella COMPANY e mostrerà le seguenti due righe:
Database aperto con successo Registrazioni create con successo
Il seguente programma Python mostra come ottenere e visualizzare le registrazioni dalla tabella COMPANY creata in precedenza:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() print "Database aperto con successo" cursor = c.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 "Operazione eseguita con successo" conn.close()
Eseguito il programma sopra, produrrà i seguenti risultati:
Database aperto con successo 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 操作完成成功
Il seguente codice Python mostra come utilizzare la statement UPDATE per aggiornare qualsiasi record e quindi ottenere e visualizzare i record aggiornati dalla tabella COMPANY:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() print "Database aperto con successo" c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1") conn.commit() print "Numero totale di righe aggiornate: ", 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 "Operazione eseguita con successo" conn.close()
Eseguito il programma sopra, produrrà i seguenti risultati:
Database aperto con successo Numero totale di righe aggiornate: 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 操作完成成功
Il seguente codice Python mostra come utilizzare la statement DELETE per eliminare qualsiasi record e quindi ottenere e visualizzare i record rimanenti dalla tabella COMPANY:
#!/usr/bin/python import sqlite3 conn = sqlite3.connect('test.db') c = conn.cursor() print "Database aperto con successo" c.execute("DELETE from COMPANY where ID=2;") conn.commit() print "Numero totale di righe eliminate: ", 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 "Operazione eseguita con successo" conn.close()
Eseguito il programma sopra, produrrà i seguenti risultati:
Database aperto con successo Numero totale di righe eliminate: 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 操作完成成功