Programmazione

Nozioni di base per lavorare con il database SQLite in Python

Nozioni di base per lavorare con il database SQLite in Python

Un database è uno dei file più utili e popolari per l'archiviazione dei dati; possono essere utilizzati per memorizzare qualsiasi tipo di dati, inclusi testo, numeri, immagini, dati binari, file, ecc. SQLite è un sistema di gestione di database relazionali basato sul linguaggio SQL. È una libreria C e fornisce un'API per lavorare con altri linguaggi di programmazione, incluso Python. Non richiede l'esecuzione di un processo server separato in base alle esigenze nei motori di database di grandi dimensioni come MySQL e Postgresql.

È veloce e leggero e l'intero database è archiviato in un singolo file su disco, il che lo rende portatile come CSV o altri file di archiviazione dati. Molte applicazioni utilizzano SQLite per l'archiviazione interna dei dati, principalmente in ambienti come dispositivi mobili o piccole applicazioni.

Database SQLite per Python

Facciamo un tuffo profondo in SQLite con il linguaggio di programmazione Pythonpy. In questo tutorial, impareremo i vantaggi dell'utilizzo di SQLite, le basi del modulo python sqlite3, la creazione di una tabella in un database, l'inserimento di dati nella tabella, l'interrogazione dei dati dalla tabella e l'aggiornamento dei dati della tabella.

Vantaggi dell'utilizzo di SQLite

I principali vantaggi dell'utilizzo di SQLite sono:

SQLite viene utilizzato anche in Google Chrome per memorizzare i cookie, i dati dell'utente e altri dati importanti, incluse le password dell'utente. Il sistema operativo Android utilizza anche SQLite come motore di database principale per archiviare i dati.

Modulo Python SQLite3

Per usare SQLite, abbiamo bisogno che Python sia installato nel nostro sistema. Se non hai già installato Python nel tuo sistema, puoi fare riferimento alla nostra guida passo passo per installare Python in Linux. Potremmo usare SQLite in Python usando il sqlite3 modulo disponibile nella libreria standard di Python. Gerhard Häring ha scritto il modulo sqlite3; fornisce un'interfaccia SQL compatibile con DB-API 2.0. Viene preinstallato con la libreria standard Python, quindi non dobbiamo preoccuparci di ulteriori installazioni.

Creazione di una connessione a un database

Il primo passo mentre si lavora con SQLite in Python è impostare una connessione con un database. Possiamo farlo usando il metodo connect() di sqlite3 per impostare una connessione. Guarda il seguente codice per un esempio. Puoi semplicemente copiare il codice in un IDE o in un editor di testo ed eseguirlo. Se hai un problema con la scelta dell'IDE per Python, puoi fare riferimento alla nostra guida sul confronto del miglior IDE Python. Si consiglia di riscrivere nuovamente il codice nel proprio IDE e, se si desidera copiare il codice, verificare la sintassi con il codice presente qui.

# importando i moduli richiesti import sqlite3 # configurazione della connessione con database conn = sqlite3.connect("campione.db") print("Connessione al database riuscita") # chiusura della connessione conn.vicino()

Il programma sopra creerà una connessione con il file di database SQLite "sample.db."Dà il seguente output nel terminale.

Vediamo cosa sta succedendo nel codice sopra. Nella prima riga, abbiamo importato il modulo sqlite3, che ci aiuterà a lavorare con i database SQLite in Python.

Nella seconda riga, creiamo una connessione con un file di database SQLite denominato "sample.db” utilizzando il Collegare() funzione. La funzione connect() accetta il percorso del file del database come argomento. Se il file non esiste nel percorso specificato, creerà esso stesso un nuovo file di database con il nome specificato in quel percorso. La funzione connect() restituirà un oggetto di database nel nostro programma; memorizziamo l'oggetto restituito in una variabile denominata connessione.

La terza riga nel nostro programma è un semplice Stampa istruzione per visualizzare un messaggio su una connessione riuscita. L'ultima riga del programma interrompe la connessione con il database utilizzando il tasto vicino() funzione dell'oggetto di connessione.

Nell'esempio precedente, abbiamo creato il database nel disco, ma possiamo anche creare un database nella memoria RAM primaria. La creazione di un database nella RAM rende l'esecuzione del database più veloce del solito. Tuttavia, il database verrà creato temporaneamente e, quando l'esecuzione del programma si interrompe, eliminerà il database dalla memoria. Possiamo creare un database in memoria fornendo il nome particolare :memory: come argomento al Collegare() funzione. Vedi il programma sotto come illustrazione.

import sqlite3 conn = sqlite3.connect(":memory:") print("\n [+] Il database è stato creato con successo nella memoria") conn.vicino()

Il programma sopra creerà un database nella RAM e possiamo usarlo per eseguire quasi tutte le attività che possiamo fare con i database creati nel disco. Questo metodo è utile durante la creazione di un database virtuale temporaneo per qualche motivo.

Cursore SQLite3

UNcursore l'oggetto è la nostra interfaccia al database, che permette di eseguire qualsiasiQuery SQL sul database. Per eseguire qualsiasi script SQL utilizzando sqlite3, dobbiamo creare un oggetto cursore. Per creare un oggetto cursore, dobbiamo usare il cursore() metodo del connessione oggetto. Possiamo creare un oggetto cursore del nostro database usando il seguente codice.

# importando i moduli richiesti import sqlite3 # configurazione della connessione al database conn = sqlite3.connect("campione.db") print("\n [+] Collegato con successo al database") cur = conn.cursor() print("\n [+] Il cursore è stato impostato con successo") cur.close() # chiude la connessione conn.vicino()

Quando il programma viene eseguito, l'output verrà visualizzato come mostrato nell'immagine sottostante.

Vediamo come funziona il codice sopra. Nel codice sopra, il primo, il secondo, il terzo, sta configurando una connessione con il database, come mostrato in precedenza. Nella quarta riga, abbiamo usato il cursore() metodo dell'oggetto connessione per creare un oggetto cursore e memorizzare l'oggetto cursore restituito in una variabile denominata "cur". La quinta riga è un generale Stampa() dichiarazione. Nella sesta riga, abbiamo distrutto l'oggetto cursore dalla memoria usando il vicino() metodo dell'oggetto cursore.

Tipi di dati SQLite

Prima di procedere oltre, cerchiamo di capire prima i tipi di dati SQLite. Il motore di database SQLite ha diverse classi di archiviazione per archiviare molti tipi di dati, inclusi testo, dati binari, numeri interi, ecc. Ogni valore ha uno dei seguenti tipi di dati.

Tipi di dati SQLite:

Confronto tra tipi di dati SQLite e Python

Ci saranno molte volte in cui avremo bisogno di usare i tipi di dati Python per memorizzare alcuni dati SQL ed eseguire alcune attività. Per fare una cosa del genere, dobbiamo sapere quali tipi di dati SQL si riferiscono a quali tipi di dati Python.

I seguenti tipi di Python sono in qualche modo simili ai tipi di dati SQLite:

tipo pitone tipo SQLite
Nessuna NULLO
int NUMERO INTERO
galleggiante VERO
str TESTO
byte BLOB

Creazione di una tabella utilizzando SQLite

Per creare una tabella usando SQLite, dobbiamo usare il CREA TABELLA istruzione di SQL nel eseguire() metodo dell'oggetto cursore. La sintassi di base dell'istruzione CREATE TABLE in SQL è mostrata di seguito:

CREATE TABLE nome_tabella( nome_colonna Vincolo tipo_dati,… nome_colonna Vincolo tipo_dati );

Per utilizzare l'istruzione SQLite sopra in Python, è necessario eseguire il programma di esempio seguente. Creerà una tabella denominata impiegato nel nostro database.

import sqlite3 conn = sqlite3.connect("campione.db") print("\n [+] Collegato con successo al database") cur = conn.cursor() print("\n [+] Il cursore è stato impostato con successo") table = cur.execute(""" CREATE TABLE impiegato( id INT PRIMARY KEY, nome CHAR(25), stipendio CHAR(25), data_adesione DATE ); """) print("\n [+] La tabella è stata creata con successo ") cura.chiudi() conn.vicino()

Nel programma sopra, abbiamo creato un created dipendente tabella con gli attributi id, nome, stipendio, e data_adesione. Questa tabella può ora essere utilizzata per archiviare dati o eseguire query sui dati secondo i requisiti. Vedrai il seguente output nel terminale.

Nel codice sopra, abbiamo usato il eseguire() metodo dell'oggetto cursore per eseguire il comando SQL per creare una tabella con le colonne date.

Inserimento di dati in una tabella

Abbiamo creato una tabella nel nostro database SQLite. Ora inseriamo alcuni dati in esso utilizzando SQL. La sintassi di base dell'istruzione INSERT di SQL è:

INSERT INTO nome_tabella (nome_colonne_1, nome_colonne_2,… ) VALUES (dati_colonne_1, dati_colonne_1,…)

Nella sintassi sopra, il nome_tabella è il nome della tabella in cui vogliamo inserire i nostri dati. Il nome_colonna_1, nome_colonna_2, sono i nomi delle colonne presenti nella tabella. Il colonna_dati_1, colonna_dati_2,… sono i dati che vogliamo inserire nelle colonne date.

Vediamo una demo pratica per inserire dati in una tabella. Aggiungeremo alcuni dati nella nostra tabella denominata dipendente usando SQLite e Python. Esegui il codice seguente per inserire alcuni dati nella tabella.

import sqlite3 conn = sqlite3.connect("campione.db") print("\n [+] Collegato con successo al database") cur = conn.cursor() print("\n [+] Il cursore è stato impostato con successo") cur.execute("INSERT INTO impiegato (id, nome, stipendio, data_adesione) VALUES (1001, 'David', 50000, '1-08-2019')") cur.execute("INSERT INTO impiegato (id, nome, stipendio, data_adesione) VALUES (1002, 'Sam', 80000, '09-09-2020')").execute("INSERT INTO impiegato (id, nome, stipendio, data_adesione) VALUES (1003, 'Roshan', 90000, '8-08-2020')") cur.execute("INSERT INTO impiegato (id, nome, stipendio, data_adesione) VALUES (1004, 'Kishan', 100000, '9-09-2020')") cur.execute("INSERT INTO impiegato (id, nome, stipendio, data_adesione) VALUES (1005, 'Ankit', 111000, '10-05-2019')") print("\n [+] I dati sono stati inseriti con successo " ) cura.chiudi() conn.commit() connessione.vicino()

Il codice sopra inserirà alcuni dati nel dipendente tabella che abbiamo creato in precedenza. Vediamo cosa sta succedendo nel codice. Le prime cinque righe servono per creare una connessione con il database e impostare il cursore. Nelle righe da sei a dieci, dobbiamo usare il comando INSERT di SQL per inserire i dati nella tabella dei dipendenti. Dobbiamo usare il nome delle colonne della tabella degli impiegati nella prima parentesi e i dati per le colonne nella seconda parentesi. Abbiamo solo bisogno di usare il commettere() metodo dell'oggetto connessione prima di disconnettersi dal database, altrimenti le modifiche apportate non verranno salvate nel database.

Interrogazione di dati da una tabella

Abbiamo imparato come inserire dati in un database SQLite, ma abbiamo anche bisogno di interrogare i dati dal database per essere utilizzati dal nostro programma o dagli utenti. Per interrogare i dati, possiamo usare l'istruzione SELECT dell'SQL con il metodo execute(). La sintassi di base dell'istruzione SELECT è mostrata di seguito.

SELECT nomi_colonne FROM nome_tabella

Il colonne_nomi nella sintassi sarà il nome delle colonne che dobbiamo interrogare. Queste colonne devono essere presenti nella tabella il cui nome è dato al posto di nome_tabella. Ora vediamo come possiamo usare questa sintassi per interrogare i dati dalla nostra tabella dei dipendenti. Basta eseguire il seguente codice per vedere un'illustrazione.

import sqlite3 conn = sqlite3.connect("campione.db") print("\n [+] Collegato con successo al database") cur = conn.cursor() print("\n [+] Il cursore è stato impostato con successo") cur.execute("SELECT id,name FROM impiegato") table = cur.fetchall() per i nella tabella: print(i) cur.chiudi() conn.commit() connessione.vicino()

L'output fornito dal programma precedente è mostrato di seguito.

Il programma sopra interrogherà la tabella dei dipendenti per le colonne id e nome. Possiamo raccogliere i dati che sono stati restituiti utilizzando il recupera() metodo dell'oggetto cursore. I dati restituiti sono un elenco Python contenente le righe che abbiamo interrogato. Per visualizzare le singole righe, dobbiamo usare il ciclo for Python per scorrere l'elenco; puoi leggere di più sul ciclo Python for qui. Ora vediamo alcune cose utili che possiamo eseguire con l'istruzione SELECT.

Recupera tutti i dati da una tabella

A volte è necessario recuperare tutti i record da una tabella di database. Per ottenere tutti i record utilizzando l'istruzione SELECT di SQL, è necessario seguire la sintassi di base fornita di seguito:

SELECT * FROM nome_tabella

Il * simbolo verrà utilizzato per denotare tutte le colonne e, utilizzando questo, possiamo interrogare tutte le colonne di una tabella SQLite. Per recuperare tutti i record dall'impiegato della tabella che abbiamo creato in precedenza, dobbiamo eseguire il seguente codice.

import sqlite3 conn = sqlite3.connect("campione.db") print("\n [+] Collegato con successo al database") cur = conn.cursor() print("\n [+] Il cursore è stato impostato con successo") cur.execute("SELECT * FROM impiegato") righe = cur.fetchall() print("\n [+] Interrogazione dei dati \n") per i in righe: print(i) cur.chiudi() conn.commit() connessione.vicino()

Il codice sopra mostrerà tutti i record presenti nella tabella dei dipendenti che abbiamo creato in precedenza. L'output del programma sarà qualcosa del genere:

Interroga i dati in ordine specifico

A volte abbiamo bisogno di interrogare i dati da una tabella in un ordine definito come Crescente o Decrescente. Possiamo usare l'istruzione SELECT con la parola chiave ORDER BY per visualizzare i dati in ordine. La sintassi di base della parola chiave ORDER BY nell'istruzione SELECT è:

SELECT nome_colonne FROM nome_tabella ORDER BY nome_colonne

Vediamo come possiamo usare la parola chiave ORDER BY per visualizzare i dati dall'ordine della tabella dei dipendenti per nome.

import sqlite3 conn = sqlite3.connect("campione.db") print("\n [+] Collegato con successo al database") cur = conn.cursor() print("\n [+] Il cursore è stato impostato con successo") cur.execute("SELECT * FROM impiegato ORDER BY name") table = cur.fetchall() per i nella tabella: print(i) cur.chiudi() conn.commit() connessione.vicino()

Potresti vedere l'output del codice sopra, come mostrato di seguito.

Potresti notare nell'output che i dati sono stati visualizzati nell'ordine crescente della colonna nome.

Aggiornamento dei record in una tabella

Ci sono molte situazioni in cui vogliamo aggiornare la tabella dei nostri database. Ad esempio, se stiamo utilizzando il database per un'applicazione scolastica, dovremo aggiornare i dati se uno studente si è trasferito in una nuova città. Possiamo aggiornare rapidamente una riga di qualsiasi tabella del nostro database utilizzando il database AGGIORNARE istruzione di SQL nel metodo execute(). Avremo bisogno di usare la clausola WHERE di SQL come condizione per selezionare il dipendente. La sintassi di base del AGGIORNARE la dichiarazione è mostrata di seguito.

UPDATE nome_tabella SET update_required WHERE Alcune_condizioni

Vedere l'esempio seguente come illustrazione dell'istruzione UPDATE.

import sqlite3 conn = sqlite3.connect("campione.db") print("\n [+] Collegato con successo al database") cur = conn.cursor() print("\n [+] Il cursore è stato impostato con successo") print("\n [+] Dati prima dell'aggiornamento\n") cur.execute("SELECT * FROM impiegato") before = cur.fetchall() per i in before: print(i) cur.execute("UPDATE impiegato SET nome = 'Aditya' where name = 'Sam'") print("\n [+] Dati dopo l'aggiornamento\n") cur.execute("SELECT * FROM impiegato") after = cur.fetchall() per i in after: print(i) cur.chiudi() conn.commit() connessione.vicino()

Il programma di cui sopra aggiornerà l'impiegato del tavolo. Sostituisce il nome Sam con il nome Aditya ovunque appaia nella tabella. Vedere l'immagine sotto per l'output del programma.

Conclusione

Questa è la nostra guida completa per eseguire alcune attività di base relative al database SQLite utilizzando Python. Nel prossimo tutorial, vedremo alcuni utilizzi più avanzati che dovrebbero portarti al livello successivo di apprendimento del database SQLite per Python. Resta sintonizzato su FOSSLinux.

OpenTTD vs Simutrans
Creare la tua simulazione di trasporto può essere divertente, rilassante ed estremamente allettante. Ecco perché devi assicurarti di provare quanti pi...
Tutorial OpenTTD
OpenTTD è uno dei giochi di simulazione aziendale più popolari in circolazione. In questo gioco, devi creare una meravigliosa attività di trasporto. T...
SuperTuxKart per Linux
SuperTuxKart è un fantastico titolo progettato per offrirti l'esperienza di Mario Kart gratuitamente sul tuo sistema Linux. È piuttosto impegnativo e ...