Le migliori query SQL in Python che ogni sviluppatore Python dovrebbe conoscere

Pubblicato: 2021-01-29

SQL sta per Structured Query Language che aiuta a gestire, manipolare e archiviare database relazionali. Un database relazionale comprende raccolte di tabelle correlate in una forma o nell'altra. Più tabelle ci consentono di separare entità diverse delle informazioni di destinazione ed evitare che centinaia di colonne vengano raggruppate in una tabella che potrebbe rendere difficile la gestione del database.

È un linguaggio di query e non il database stesso. Queste query possono essere eseguite su qualsiasi sistema di gestione di database relazionali come Oracle, Microsoft SQL Server, ma esiste un approccio pythonic per creare ed eseguire query SQL.

Sommario

SQLite3

Questa è la libreria integrata in Python che ci consente di creare un database leggero senza la necessità di eseguire un vero modello client-server. Può essere utilizzato internamente dalle applicazioni per memorizzare dati ed eseguire comandi SQL. Il pacchetto è facile da usare e permette di replicare lo stesso schema in qualsiasi database di produzione come Postgresql. Vediamo come impostare il database.

  • Dichiarazione di importazione standard:

importa sqlite3 come sq

La libreria viene importata come alias "sq".

  • Ora dobbiamo creare una connessione al database. L'oggetto di connessione servirà a questo scopo:

connessione = sq.connect ("example.db")

Se questo file non è stato creato prima, verrà creato non appena viene eseguito questo comando.

  • Per accedere e recuperare le informazioni dal database, è necessario creare un oggetto cursore.

cursore = connection.cursor()

Ora che è stata eseguita la configurazione di base, possiamo inserire i dati nel database creando le rispettive tabelle, ma prima rivediamo alcuni comandi SQL.

Comandi di base in SQL

SQL è eccellente in termini di comandi leggibili in inglese. Questi sono solitamente digitati in maiuscolo e non ci sono restrizioni al riguardo. Questo di solito viene praticato in modo che le parole chiave della query siano evidenziate e diventino distinguibili dagli attributi della tabella. Ma poiché ora abbiamo potenti IDE che li evidenziano in un colore diverso, qualsiasi metodo funzionerebbe.

1. Crea tabella

Ciò ti consente di creare gli oggetti di conservazione dei dati, le tabelle nel tuo database. Un database può avere molte tabelle con una o più relazioni. Le tabelle hanno intestazioni per ogni colonna che descrive il valore che contiene. Durante la creazione della tabella, è necessario specificare il nome della colonna, il tipo di dati che conterrà e le dimensioni. È possibile aggiungere altri attributi, ad esempio se la colonna è una chiave primaria, può avere valori null e così via.

Una tabella di base può essere creata come:

CREA TABELLA company_data (

id int,

nome varchar (24),

no_di_impiegato int

);

2. SELEZIONA e DA

Come suggerisce il nome, viene utilizzato per selezionare e recuperare i dati dalle tabelle. È il passo più importante che ti permetterebbe di dare un'occhiata ai dati. È simile alla funzione testa o coda di Panda.

Una semplice query che utilizza questi comandi sarebbe simile a questa:

SELEZIONA <nome_colonna/i>

DA <nome_tabella>;

Per recuperare tutte le colonne dalla tabella, puoi mettere la stella (*) invece di tutti i nomi delle colonne. La parola chiave LIMIT aiuta a definire il numero massimo di righe. Considera questa domanda:

SELEZIONARE *

DA tabella_esempio

LIMITE 5;

3. Dove

La clausola where viene utilizzata per specificare le condizioni aggiuntive sulla query. Puoi includere l'intervallo per le colonne, qualsiasi confronto specifico o negazioni.

Per esempio:

SELEZIONA nome_cliente, nome_azienda

DA azienda_dati

WHERE nome_azienda = 'upGrad';

4. Inserisci

Questa clausola viene utilizzata per aggiungere i valori alle tabelle di dati. I valori vengono inseriti nello stesso ordine in cui i nomi delle colonne vengono aggiunti alla tabella nel comando di creazione tabella. Si possono inserire più righe o una alla volta.

Ad esempio, la query seguente inserisce 3 record in una tabella:

INSERT INTO company_data (id, nome, no_of_employees)

I VALORI

(1, 'societàz_A', 100),

(2, 'azienda_B', 200),

(3, 'società_C', 500);

Esecuzione tramite Python

Ora che sei a conoscenza dei comandi, è il momento di eseguirli nel codice. Finora siamo collegati al database e abbiamo creato un oggetto cursore. Questo oggetto aiuterà nell'esecuzione dei comandi sul database:

cursor.execute(''' <QUERY> ''')

La query viene passata come stringa e tra virgolette triple. Questa modifica non si rifletterà nel database finché non esegui il commit di questa modifica. La chiusura della connessione al database alla fine garantisce che non verranno eseguite nuove esecuzioni dopo questo punto.

Guarda questo semplice codice:

importa sqlite3 come sq

connessione = sq.connect ("example.db")

cursore = connection.cursor()

cursor.execute(”'

CREA TABELLA tabella1 (

id int,

nome varchar (24)

)

”')

cursor.execute(”'

INSERT INTO table1 (id, nome)

I VALORI

(1, 'aggiornamento'),

(2, 'blog')

”')

cursor.execute(”'

SELEZIONARE *

DA tabella1

”')

connection.commit()

connection.close()

Suggerimenti importanti

1. Poiché le query vengono passate come stringhe, modificarle utilizzando f-string può sembrare una buona opzione per rendere il programma dinamico e controllato dall'utente, ma può causare alcuni problemi di sicurezza come attacchi SQL injection. Per evitarli, usa il segnaposto "?" ovunque tu voglia sostituire alcuni valori nella query. Per esempio:

cursor.execute('"SELECT ? FROM ?''', col_name, table_name)

Puoi chiedere all'utente di fornire il nome della colonna e quel valore verrà sostituito qui.

2. Utilizzare funzioni come fetchone() e fetchall() per scorrere i risultati. Fetchone restituisce la riga successiva nella query e fetchall restituisce tutte le righe recuperate dal cursore. I risultati vengono restituiti come tupla in modo che non possano essere modificati da funzioni esterne nel programma.

3. Se si desidera aggiungere valori in blocco al database, è possibile utilizzare la funzione executemany() e passare l'elenco di tuple contenenti i valori da aggiungere. Per esempio:

da_aggiungere = [(1, 'ciao') , (2, 'Mondo')]

cursor.executemany('INSERT INTO table VALUES (?, ?)', to_add)

Leggi anche: Idee e argomenti per i progetti Python

Impara i corsi di scienza dei dati online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Conclusione

SQL è il linguaggio di database più preferito e di facile comprensione. Si consiglia alla maggior parte dei principianti di Data Science di esercitarsi con SQL in quanto migliora il processo di recupero dei dati e offre un'idea di come viene eseguita l'ingegneria dei dati. È il linguaggio standard per qualsiasi manipolazione del database e offre un accesso più rapido al database.

Se sei curioso di conoscere la scienza dei dati, dai un'occhiata al Diploma PG in Data Science di IIIT-B e upGrad, creato per i professionisti che lavorano e offre oltre 10 casi di studio e progetti, workshop pratici pratici, tutoraggio con esperti del settore, 1- on-1 con mentori del settore, oltre 400 ore di apprendimento e assistenza al lavoro con le migliori aziende.

Cosa sai sui vincoli in SQL?

I vincoli determinano il tipo di dati da inserire nella tabella. Vengono specificati in fase di creazione della tabella e possono essere applicati ad un singolo campo oa più campi. I vincoli in SQL sono:
NOT NULL- Impedisce l'immissione di un valore NULL in un campo.
CHECK- Controlla se tutti i valori in un campo soddisfano la condizione data.
DEFAULT- Assegna automaticamente un valore predefinito a un campo se non è stato immesso alcun valore.
UNICO: consente di inserire solo valori univoci in un campo.
INDEX- Indicizza un campo che fornisce un recupero più rapido dei record.
CHIAVE PRIMARIA: identifica in modo univoco ogni record in una tabella.
CHIAVE ESTERA: limita le azioni che potrebbero danneggiare i collegamenti tra le tabelle.

Spiegare un indice e i suoi tipi?

Un indice o un indice di database può essere definito una tabella di ricerca speciale che rende l'operazione di recupero dei dati molto più veloce. Consuma più memoria e scritture aggiuntive per cercare i dati più velocemente. Un indice può essere di 4 tipi:
1. Indice unico
2. Indice non unico
3. Indice raggruppato

Che cos'è una relazione in SQL e quali sono i suoi tipi?

Una relazione tra più entità o più oggetti tangibili e intangibili che hanno qualcosa a che fare tra loro è nota come relazione. Esistono 4 tipi di relazioni in SQL:
1. Uno a uno
2. Uno a molti/Molti a uno
3. Molti a molti
4. Relazioni autoreferenziali.