Lo scopo di questo tutorial Python SQLite è quello di dimostrare come sviluppare applicazioni di database Python con il database SQLite. Imparerai come eseguire le operazioni del database SQLite da Python.
Come tutti sapete, SQLite è una libreria in linguaggio C che implementa un motore di database SQL relativamente veloce, senza server e autonomo, altamente affidabile. SQLite è il motore di database più comunemente utilizzato nell’ambiente di test (fare riferimento alla Home page di SQLite)., SQLite viene integrato con la maggior parte dei computer e dispositivi mobili e browser. Il modulo sqlite3 ufficiale di Python ci aiuta a lavorare con il database SQLite.
Il modulo Python sqlite3 aderisce alla specifica Python Database API v2. 0 (PEP 249). PEP 249 fornisce un’interfaccia SQL progettata per incoraggiare e mantenere la somiglianza tra i moduli Python utilizzati per accedere ai database.,
Questo tutorial si concentra principalmente su: –
- Collegamento al database SQLite da Python e la creazione di un database SQLite e tabelle
- Avanti, ci occuperemo tipi di dati SQLite ed è corrispondenti tipi di Python
- Avanti, impareremo come eseguire SQLite CRUD operazione cioè.,di consultare i dati digitali in SQLite usare Python
- Avanti, coprirà SQLite transazione la Gestione, la creazione e la chiamata di SQLite funzioni, e di gestione degli errori di tecniche per sviluppare solide programmi in python con SQLite database
- permette anche di sapere come creare e gestire un database in-memory e la conversione SQLite valori di Python personalizzato tipi
- Prendere una copia di backup del database SQLite all’interno di Python
vediamo ogni sezione ora.,
Python SQLite Connection
Questa sezione consente di sapere come creare un database SQLite e connettersi ad esso tramite python utilizzando il modulo sqlite3.
Per stabilire una connessione a SQLite, è necessario specificare il nome del database che si desidera connettere. Se si specifica il nome del file di database già presente sul disco, si collegherà ad esso. Ma se il file di database SQLite specificato non esiste, SQLite crea un nuovo database per te.,
È necessario seguire i seguenti passaggi per connettersi a SQLite
- Utilizzare il metodo
connect()
di un modulo sqlite3 e passare il nome del database come argomento. - Creare un oggetto cursore utilizzando l’oggetto di connessione restituito dal metodo connect per eseguire query SQLite da Python.
- Chiudere l’oggetto Cursore e l’oggetto di connessione al database SQLite quando il lavoro è fatto.
- Cattura l’eccezione del database se presente che può verificarsi durante questo processo di connessione.
Il seguente programma Python crea un nuovo file di database ” SQLite_Python.,db ” e stampa i dettagli della versione SQLite.
Si dovrebbe ottenere il seguente output dopo la connessione a SQLite da Python.
Database created and Successfully Connected to SQLiteSQLite Database Version is: The SQLite connection is closed
Capire SQLite Codice di connessione in dettaglio
importare sqlite3
- Questa linea importa la sqlite3 modulo nel nostro programma. Utilizzando le classi e i metodi definiti nel modulo sqlite3 possiamo comunicare con il database SQLite.
sqlite3.,connect()
- Utilizzando il metodo
connect()
possiamo creare una connessione al database SQLite. Questo metodo restituisce l’oggetto di connessione SQLite. - L’oggetto di connessione non è thread-safe. il modulo sqlite3 non consente la condivisione di connessioni tra thread. Se si tenta ancora di farlo, si otterrà un’eccezione in fase di esecuzione.
- Il metodo
connect()
accetta vari argomenti. Nel nostro esempio, abbiamo passato l’argomento nome del database per connettersi.
cursore = sqliteConnection.,cursor ()
- Utilizzando un oggetto di connessione possiamo creare un oggetto cursore che ci permette di eseguire comando SQLite / query tramite Python.
- Possiamo creare tutti i cursori che vogliamo da un singolo oggetto di connessione. Come oggetto di connessione, anche questo oggetto cursore non è thread-safe. il modulo sqlite3 non consente la condivisione di cursori tra thread. Se si tenta ancora di farlo, si otterrà un’eccezione in fase di esecuzione.
Dopo questo, abbiamo creato una query SQLite per ottenere la versione del database.
cursore.,execute()
- Usando il metodo execute del cursore possiamo eseguire un’operazione di database o una query da Python. Il metodo
cursor.execute()
accetta una query SQLite come parametro e restituisce il ResultSet, ovvero nient’altro che righe di database. - Possiamo recuperare il risultato della query da ResultSet usando metodi di cursore come
- Nel nostro esempio, stiamo eseguendo una query
SELECT version();
per recuperare la versione SQLite.,
try-except-finally block: Abbiamo inserito tutto il nostro codice nel blocco try-except per rilevare le eccezioni e gli errori del database SQLite che possono verificarsi durante questo processo.
- Utilizzando la classe
sqlite3.Error
del modulo sqlite3, possiamo gestire qualsiasi errore e eccezione del database che può verificarsi mentre si lavora con SQLite da Python. - Utilizzando questo approccio possiamo rendere la nostra applicazione robusta. La classe
sqlite3.Error
ci aiuta a comprendere l’errore in dettaglio. Restituisce un messaggio di errore e un codice di errore.
cursore.chiudi () e connessione.,close()
- È sempre buona norma chiudere il cursore e l’oggetto di connessione una volta completato il lavoro per evitare problemi al database.
Crea tabella SQLite da Python
In questa sezione, impareremo come creare una tabella nel database SQLite da Python utilizzando il modulo sqlite3. Creare un’istruzione tabella è una query DDL vediamo come eseguirlo da Python.
In questo esempio, stiamo creando una tabella “SqliteDb_developers” all’interno di “SQLite_Python.database “db”.,
Passi per la creazione di una tabella in SQLite da Python: –
- Connettersi a SQLite utilizzando un
sqlite3.connect()
. Ho spiegato il codice di connessione SQLite all’inizio di questo articolo. - Preparare una query crea tabella.
- Eseguire la query utilizzando un
cursor.execute(query)
- Alla fine, Chiudere la connessione al database SQLite e l’oggetto cursore.,
Uscita:
Successfully Connected to SQLiteSQLite table created:the sqlite connection is closed
SQLite tipi di dati e i relativi Python tipi
Prima di procedere ulteriormente l’esecuzione SQLite operazioni CRUD da Python, prima di capire SQLite tipo di dati e la loro corrispondente Python tipi, che ci aiuterà a memorizzare e leggere dati dalla tabella SQLite.
Il motore di database SQLite ha più classi di archiviazione per memorizzare i valori. Ogni valore memorizzato in un database SQLite ha una delle seguenti classi di archiviazione o tipi di dati.,
Tipi di dati SQLite:
- NULL: – Il valore è un valore NULL.
- INTEGER: – Per memorizzare il valore numerico. Il numero intero memorizzato in 1, 2, 3, 4, 6, o 8 byte a seconda della grandezza del numero.
- REAL: – Il valore è un valore in virgola mobile, ad esempio, 3.14 valore di PI
- TEXT: – Il valore è una stringa di testo, valore di TESTO memorizzato utilizzando la codifica UTF-8, UTF-16BE o UTF-16LE.
- BLOB: – Il valore è un blob di dati, cioè dati binari. Viene utilizzato per memorizzare immagini e file.
I seguenti tipi di Python convertiti in SQLite senza alcun problema., Quindi, quando stai modificando o leggendo dalla tabella SQLite eseguendo operazioni CRUD, ricorda questa tabella.,
Python type | SQLite type |
None | NULL |
int | INTEGER |
float | REAL |
str | TEXT |
bytes | BLOB |
Perform SQLite CRUD Operations from Python
Most of the time, we need to manipulate the SQLite table’s data from Python. To perform these data manipulations, we can execute DML queries i.e.,, SQLite Inserire, aggiornare, Eliminare le operazioni da Python.
Ora, conosciamo la tabella e i dettagli della colonna, quindi passiamo alle operazioni crud. Ho creato un tutorial separato su ogni operazione per coprirlo in dettaglio. Vediamo ogni sezione ora.
- Inserisci i dati nella tabella SQLite da Python – In questa sezione, impareremo come eseguire il comando INSERISCI da Python per inserire i record nella tabella SQLite.
- Leggi i dati della tabella SQLite da Python – In questo articolo, impareremo come eseguire SQLite SELECT query da un’applicazione Python per recuperare le righe della tabella., Inoltre, ti farò sapere come usare
fetchall()
,fetchmany()
efetchone()
metodi di una classe cursore per recuperare righe limitate dalla tabella per migliorare le prestazioni. - Aggiorna i dati della tabella SQLite da Python-In questa sezione, impareremo come eseguire la query di aggiornamento da python per modificare i record della tabella SQLite.
- Elimina i dati dalla tabella SQLite da Python-In questa sezione, impareremo come eseguire la query DELETE da python per rimuovere i record dalla tabella SQLite.,
Esegui file SQL (script) usando la funzione executescript del cursore
Gli script SQLite sono utili per la maggior parte del lavoro quotidiano. SQLite script è un insieme di comandi SQL salvati come file (in .formato sql).
Uno script SQLite contiene una o più operazioni SQL che verranno eseguite dal prompt della riga di comando quando richiesto.
Di seguito sono riportati i pochi scenari comuni in cui possiamo utilizzare gli script SQLite
- Eseguire il backup di più database contemporaneamente.
- Confronta i conteggi delle righe nelle tabelle da due database diversi con lo stesso schema.,
- mantieni tutti i tuoi comandi SQL CREATE TABLE in uno script di database. Quindi puoi creare uno schema di database su qualsiasi server.
È possibile eseguire lo script dalla riga di comando SQLite utilizzando il .leggi il comando, come questo:
sqlite> .read mySQLiteScript.sql
Per questo esempio, ho creato uno script SQLite di esempio che creerà due tabelle. Questo è lo script che ho creato.
CREATE TABLE hardware ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, price REAL NOT NULL);CREATE TABLE software ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, price REAL NOT NULL);
Ora vediamo come eseguire uno script SQLite da Python.
Output: tabelle SQLite create eseguendo uno script SQL da Python.,
Successfully Connected to SQLiteSQLite script executed successfullysqlite connection is closed
Nota: Dopo la connessione a SQLite, leggiamo tutto il contenuto di un file di script SQLite memorizzato su disco e lo copiamo in una variabile stringa python. Quindi abbiamo chiamatocursor.executscript(script)
metodo per eseguire tutte le istruzioni SQL in una chiamata.
Inserisci/Recupera dati digitali in SQLite usando Python
- In questa sezione, ti farò sapere come inserire o salvare qualsiasi informazione digitale come un file, un’immagine, un video o una canzone come dati BLOB nella tabella SQLite da python.,
- Inoltre, scopri come possiamo leggere un file, un’immagine, un video, una canzone o qualsiasi dato digitale memorizzato in SQLite usando Python.
Consultare la nostra guida completa su Python SQLite BLOB per inserire e recuperare file e immagini.
Crea o ridefinisci le funzioni SQLite usando Python
Il modulo Python sqlite3 ci offre la possibilità di creare e ridefinire funzioni SQL dall’interno di Python. Ho creato un tutorial separato per coprirlo in dettaglio. Fare riferimento a Come creare e ridefinire le funzioni SQL da Python.,
Consulta la nostra guida completa su Crea o ridefinisci le funzioni SQLite dall’interno di Python.
Lavorare con i tipi di data e timestamp SQLite in Python e viceversa
A volte abbiamo bisogno di inserire o leggere il valore data o DateTime da una tabella SQLite. Quindi, se stai lavorando con valori di data o timestamp, consulta il nostro tutorial separato su come lavorare con i valori DateTime SQLite in Python.
Eccezioni del database SQLite
Eccezione sqlite3.Attenzione
- Una sottoclasse di eccezione. E puoi ignorarlo se vuoi che non fermi l’esecuzione.,
Eccezione sqlite3.Errore
- La classe base delle altre eccezioni nel modulo sqlite3. È una sottoclasse di eccezione.
Eccezione sqlite3.DatabaseError
- Eccezione sollevata per errori correlati al database.
Esempi: se si tenta di aprire un file come database sqlite3 che NON è un file di database, si otterrà sqlite3.DatabaseError: il file è crittografato o non è un database
Eccezione sqlite3.IntegrityError
- Sottoclasse di un DatabaseError., Si otterrà questa eccezione quando l’integrità relazionale del database è interessata, ad esempio, un controllo della chiave esterna non riesce.
Eccezione sqlite3.ProgrammingError
- È anche una sottoclasse di DatabaseError. Questa eccezione sollevata a causa di errori di programmazione, ad esempio, la creazione di una tabella con la stessa che esiste già, errore di sintassi nelle query SQL.
Eccezione sqlite3.OperationalError
- È anche una sottoclasse di DatabaseError. Questo errore non è sotto il nostro controllo. Questa eccezione è stata sollevata per gli errori correlati all’operazione del database.,
- Esempi: una disconnessione accidentale, server giù, si verifica un timeout, i problemi di origine dati. server giù
Eccezione sqlite3.NotSupportedError
- Si otterrà un’eccezione sollevata quando è stata utilizzata l’API del database che non è supportata dal database.
- Esempio: chiamata del metodo rollback () su una connessione che non supporta la transazione. Chiamata commit dopo aver creato il comando table.,
Quindi sarà sempre consigliabile scrivere tutto il codice operativo del database nel blocco try in modo da poter rilevare le eccezioni nel blocco except se ce ne sono e intraprendere le azioni correttive contro di esso.
Ad esempio, proviamo a inserire i dati in una tabella che non esiste nel database SQLite e Stampare l’intero stack di eccezioni.,
Output:
Cambia il timeout della connessione SQLite quando ci si connette da Python
Può essere lo scenario in cui più connessioni accedono a un database SQLite e uno dei processi che eseguono alcune operazioni di modifica dei dati sul database, Per eseguire la modifica dei dati la connessione deve essere bloccata, ovvero il database SQLite Il parametro timeout specificato durante la connessione al database determina per quanto tempo la connessione deve attendere che il blocco vada via fino a quando non viene sollevata un’eccezione.,
Il valore predefinito per il parametro timeout è 5.0 (cinque secondi). Non è necessario specificarlo durante la connessione perché è un valore predefinito. cioè, ogni volta che ti connetti a SQLite da Python e non hai ricevuto una risposta entro 5 secondi, il tuo programma solleverà un’eccezione. Ma se si sta affrontando un problema di timeout della connessione e si desidera aumentarlo, è possibile farlo utilizzando un argomento di timeout di una funzione sqlite3.connect
.
Vediamo come modificare il valore di timeout durante la connessione di SQLite da Python.,
Output:
Connected to SQLiteTotal rows are: (2,)The Sqlite connection is closed
Identifica le modifiche totali dall’apertura della connessione al database SQLite
A scopo di audit o statistica se vuoi trovare i numeri di righe del database che sono state modificate, inserite o eliminate dall’apertura della connessione al database puoi usare il metodoconnection.total_changes
di un modulo Python sqlite3.
Il metodo connection.total_changes
restituisce il numero totale di righe del database interessate. Vediamo l’esempio Python per trovare le modifiche totali che sono state fatte da quando è stata aperta la connessione al database.,
Output:
Connected to SQLiteTotal Rows affected since the database connection was opened: 3sqlite connection is closed
Esegui un backup del database SQLite da Python
Il modulo Python sqlite3 fornisce una funzione per eseguire un backup del database SQLite. Utilizzando un metodoconnection.backup()
è possibile eseguire il backup del database SQLite.
connection.backup(target, *, pages=0, progress=None, name="main", sleep=0.250)
Questa funzione richiede un backup del database SQLite e una copia verrà scritta nell’argomento target, che deve essere un’altra istanza di connessione., Per impostazione predefinita, o quando le pagine sono 0 o un numero intero negativo, l’intero database viene copiato in un unico passaggio; in caso contrario, il metodo esegue un ciclo di copia fino a pagine alla volta.
L’argomento name specifica il database che si desidera copiare. L’argomento sleep definisce il numero di secondi di sospensione tra i tentativi successivi di eseguire il backup delle pagine rimanenti di un database. l’argomento sleep può essere specificato come un numero intero o un valore in virgola mobile.
Vediamo l’esempio per copiare un database esistente in un altro.,
Output:
Nota:
- Dopo la connessione a SQLite, abbiamo aperto entrambi i database utilizzando due connessioni diverse.
- Successivamente, abbiamo eseguito un metodo
connection.backup()
utilizzando una prima istanza di connessione. Inoltre, abbiamo specificato il numero di pagine del database da copiare in ogni iterazione.
Python SQLite Exercise Project
Si prega di risolvere il nostro esercizio di programmazione di database Python per padroneggiare la programmazione di database in Python.
Leave a Reply