Pitone

Operazioni CRUD su database SQL e NoSQL utilizzando Python

Operazioni CRUD su database SQL e NoSQL utilizzando Python
Esistono due tipi principali di database che possono essere utilizzati con un'applicazione: database relazionali (SQL) e database non relazionali (NoSQL). Entrambi sono ampiamente utilizzati, ma la selezione di uno dipende dal tipo di dati che verranno archiviati. Ci sono quattro operazioni di base che possono essere eseguite sui database: creare, leggere, aggiornare ed eliminare (CRUD).

Possiamo interagire con i database utilizzando qualsiasi linguaggio di programmazione, oppure possiamo utilizzare un programma software che ci permetta di interagire con il database utilizzando una GUI. In questo articolo discuteremo dei database e ti mostreremo come interagire con essi utilizzando il linguaggio di programmazione Python.

Database relazionali (SQL)

I database relazionali (SQL) sono diversi dai database non relazionali (NoSQL) in termini di schema. Uno schema è un modello che definisce la struttura dei dati che andrai a memorizzare. Nei database relazionali, creiamo tabelle per memorizzare i dati. Lo schema di una tabella è definito al momento della creazione della tabella. Ad esempio, se vogliamo archiviare i dati sugli studenti in un database relazionale, creeremo una tabella di studenti e definiremo lo schema della tabella, che potrebbe includere il nome, il numero di matricola, il voto, ecc. di ogni studente. Dopo aver creato lo schema, memorizzeremo i dati nelle righe della tabella. È importante notare che non possiamo memorizzare dati che non sono definiti nello schema. In questo esempio, il voto che uno studente ha ricevuto su un esame non può essere memorizzato nella tabella perché non abbiamo definito una colonna per questi dati nello schema.

L'elenco seguente include alcuni database relazionali popolari:

Database non relazionali (NoSQL)

Come discusso sopra, i database non relazionali non hanno uno schema definito. I database non relazionali hanno raccolte invece di tabelle e queste raccolte contengono documenti equivalenti alle righe in un database relazionale. Ad esempio, se vogliamo creare un database non relazionale per archiviare i dati degli studenti, possiamo creare una raccolta di utenti e, in questa raccolta, memorizzeremo un documento per ogni studente. Questi documenti non hanno uno schema definito e puoi archiviare tutto ciò che desideri per ogni studente.

Esecuzione di operazioni CRUD in MySQL

Ora ti mostreremo come interagire con MySQL usando Python.

Installazione del driver MySQL per Python

Per interagire con MySQL usando Python, dobbiamo prima installare il driver MySQL in Python.

[email protected]:~$ sudo pip3 install mysql-connector-python

o

[email protected]:~$ sudo pip install mysql-connector-python

Creazione di un database

Prima di creare un database, dobbiamo connetterci con il server MySQL usando Python. il mysql.connettore offre il metodo connect() per aiutare a stabilire una connessione con MySQL usando Python.

>>> import mysql.connettore
//Sostituisci con il tuo IP e le credenziali del server
>>> sql = mysql.connettore.Collegare(
… host='localhost',
… utente='radice',
… password='12345'
…)
>>> stampa(sql)

Questo messaggio mostra che abbiamo creato con successo una connessione con un database MySQL usando Python. Ora, eseguiremo una query SQL sul server MySQL utilizzando il metodo execute() da mysql.modulo connettore.

>>> cursore = sql.cursore()
>>> query = 'CREA DATABASE demo_db'
>>> cursore.eseguire (interrogare)

Il codice sopra creerà un database chiamato demo_db in MySQL.

Creazione di una tabella

Ora che abbiamo creato un database, creeremo una nuova tabella chiamata studenti. Per creare una tabella, dobbiamo connetterci al database.

>>> sql_db = mysql.connettore.Collegare(
… host='localhost',
… utente='radice',
… password='12345',
… database='demo_db'
…)

Dopo la connessione al database, utilizzeremo il metodo execute() per eseguire una query SQL per creare una tabella con uno schema.

>>> query = "CREATE TABLE student(name VARCHAR(64), id INT, grade INT, dob DATE)";
>>> cursore.eseguire (interrogazione);

Il comando precedente creerà una tabella denominata student nel database demo_db; possiamo inserire solo un nome, id, grado e data di nascita nella tabella, come definito nello schema.

Inserimento di righe in una tabella

Ora che abbiamo creato una tabella, inseriremo uno studente in questa tabella. Creeremo una query e quindi utilizzeremo il metodo execute() per eseguire la query sul server MySQL utilizzando Python.

>>> query = 'INSERT INTO student(name, id, grade, dob) VALUES(“John”, 1, 3, “2020-7-04”)'
>>> cursore.eseguire (interrogare)
>>> sql_db.commettere()

Questa query aggiungerà uno studente con i dati definiti nella query nella tabella. Possiamo aggiungere altri studenti al tavolo allo stesso modo.

NOTA: le modifiche verranno applicate al database solo se si esegue sql_db.commit() dopo aver applicato le modifiche.

Selezione di righe da una tabella

L'istruzione SELECT in MySQL viene utilizzata per restituire dati da una tabella. Useremo il metodo execute() per eseguire una query, e poi useremo il metodo fetchall() per ottenere un elenco di tutti gli studenti. Quindi, possiamo usare un ciclo for per visualizzare tutti gli studenti

>>> query = 'SELECT * FROM studenti'
>>> cursore.eseguire (interrogare)
>>> risultato = cursore.recupera()
>>> per x nel risultato:
… stampa(x)
("Giovanni", 1, 3, data e ora.data(2020, 7, 4))

Possiamo vedere che vengono restituiti solo i dati per un singolo studente, poiché abbiamo un solo studente nella tabella. Possiamo usare l'istruzione WHERE in MySQL con l'istruzione SELECT per specificare i vincoli. Ad esempio, se vogliamo restituire solo gli studenti della classe 4, possiamo utilizzare la seguente query:

>>> query = 'SELECT * FROM studenti WHERE voto = 4'
>>> cursore.eseguire (interrogare)
>>> risultato = cursore.recupera()
>>> per x nel risultato:
… stampa(x)

Il codice sopra recupererà solo gli studenti dal grado 4.

Aggiornamento di una riga

In questa sezione, ti mostreremo come aggiornare i dati degli studenti in una tabella MySQL usando Python. Useremo l'istruzione UPDATE con le istruzioni WHERE e SET in MySQL per aggiornare i dati di studenti specifici. L'istruzione WHERE viene utilizzata per determinare quali righe verranno aggiornate e l'istruzione SET viene utilizzata per definire i valori utilizzati per l'aggiornamento.

>>> query = 'AGGIORNA SET studenti nome = "Segna" WHERE id = 4'
>>> cursore.eseguire (interrogare)
>>> sql_db.commettere()

Ora proveremo a leggere i dati degli studenti dalla tabella utilizzando l'istruzione SELECT.

>>> query = 'SELECT * FROM studenti WHERE id=4'
>>> cursore.eseguire (interrogare)
>>> per x nel cursore:
… stampa(x)
("Segna", 4, 4, data e ora.data(2020, 7, 15))

Ora, possiamo vedere che il nome dello studente con ID 4 è stato cambiato in Mark.

Eliminazione di una riga

Possiamo eliminare una riga dalla tabella applicando l'istruzione DELETE in MySQL usando Python. Useremo un'istruzione DELETE con un'istruzione WHERE per eliminare studenti specifici dalla tabella.

>>> query = 'ELIMINA DA studenti WHERE id=2'
>>> cursore.eseguire (interrogare)
>>> sql_db.commettere()

Ora, possiamo restituire tutti gli studenti dalla tabella usando l'istruzione SELECT.

>>> query = 'SELECT * FROM studenti'
>>> cursore.eseguire (interrogare)
>>> per x nel cursore:
… stampa(x)
("Giovanni", 1, 3, data e ora.data(2020, 7, 4))
("Giovanni", 3, 3, data e ora.data(2020, 7, 8))
("Segna", 4, 4, data e ora.data(2020, 7, 15))

Possiamo vedere che la tabella non contiene uno studente con un id di 2, poiché abbiamo rimosso lo studente dalla tabella.

Far cadere un tavolo

il mysql.il modulo connettore può essere utilizzato anche per far cadere una tabella. Possiamo eseguire un'istruzione DROP in MySQL usando il metodo execute().

>>> cursore = sql_db.cursore()
>>> query = 'DROP TABLE studenti'
>>> cursore.eseguire (interrogare)

Il codice sopra eliminerà la tabella denominata student quando eseguita in Python.

Questo conclude la nostra discussione sui database SQL. Ti abbiamo mostrato come applicare diverse query al database MySQL usando Python. Successivamente, applicheremo le operazioni CRUD a un database NoSQL chiamato MongoDB

Esecuzione di operazioni CRUD in MongoDB

Per interagire con MongoDB usando Python, dobbiamo prima installare pymongo, che è un driver MongoDB per Python.

[email protected]:~$ sudo pip install pymongo

o

[email protected]:~$ sudo pip3 install pymongo

Creazione di un database

Possiamo connetterci a MongoDB usando il metodo MongoClient() del modulo pymongo in MongoDB. Prima di eseguire qualsiasi azione, dobbiamo connetterci al database MongoDB.

>>> import pymongo
>>> cliente = pymongo.MongoClient('mongodb://localhost:27017/')

Dopo aver effettuato la connessione al datacase, possiamo eseguire la seguente riga per creare un nuovo database denominato demo_db.

>>> db = client['demo_db']

Se il database esiste già, questo comando viene ignorato.

Creazione di una collezione

Ora che abbiamo creato un database, creeremo una raccolta denominata studenti nel database denominato.

>>> import pymongo
>>> cliente = pymongo.MongoClient('mongodb://localhost:27017/')
>>> db = client['demo_db']
>>> col = db['studenti']

NOTA: MongoDB non crea una raccolta finché non inserisci i dati in essa. Pertanto, se provi ad accedere alla raccolta dopo aver eseguito il codice sopra, scoprirai che non c'è nulla nel database.

MySQL non foderato, non dobbiamo definire uno schema quando creiamo una nuova raccolta, poiché MongoDB è un database non relazionale.

Inserimento di un documento

Dopo aver creato una raccolta, possiamo inserire un documento all'interno della raccolta. Innanzitutto, dobbiamo definire un dizionario, quindi possiamo usare il metodo insert_one() per inserire i dati definiti nel dizionario nella raccolta.

NOTA: MongoDB crea automaticamente un '_id' univoco per ogni documento; quindi, non abbiamo bisogno di specificare un id.

>>> dati =
… "nome": "Giovanni",
… "livello 3,
… "dob": "2020-04-03"

>>> risultato = col.insert_one (dati)

Nel documento sopra abbiamo inserito nome, voto e dob. Ora inseriremo un documento nella raccolta studenti che ha un campo per età.

>>> dati =
… "nome" : "Marco",
… "grado": 4,
… "dob": "2020-04-09",
… "età" : 8

>>> risultato = col.insert_one (dati)

Possiamo vedere che questo comando non genera un errore. Poiché MongoDB è un database non relazionale, possiamo aggiungere qualsiasi informazione desideriamo nel documento.

Ottenere documenti

In questa sezione, useremo i metodi find() e find_one() per ottenere dati dal database. Il metodo find() accetta due argomenti: il primo viene utilizzato per filtrare i documenti e il secondo viene utilizzato per definire i campi del documento che vogliamo restituire. Ad esempio, se vogliamo ottenere l'id di "John", possiamo eseguire la seguente query:

>>> risultato = col.find("nome": "Giovanni", "_id": 1)
>>> per x nel risultato:
… stampa(x)
'_id': ObjectId('5f8f0514cb12c01f7420656e')

In alternativa, possiamo ottenere tutti i documenti dalla raccolta utilizzando la seguente query:

>>> risultato = col.trova()
>>> per x nel risultato:
… stampa(x)
'_id': ObjectId('5f8f0514cb12c01f7420656e'), 'name': 'John', 'grade': 3, 'dob': '2020-04-03'
'_id': ObjectId('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'grade': 4, 'dob': '2020-04-09', 'age': 8

Aggiornamento dei documenti

Il modulo pymongo offre i metodi update_one() e update_many() per aggiornare i documenti in una raccolta. Entrambi i metodi accettano due argomenti: il primo definisce quale documento modificare e il secondo definisce i nuovi valori. Ora, cambieremo il voto dello studente "Mark".

>>> query = "nome": "Segna"
>>> valore = "$set": "voto": 5
>>> col.update_one (query, valore)
>>> per x in col.trova():
… stampa(x)
'_id': ObjectId('5f8f0514cb12c01f7420656e'), 'name': 'John', 'grade': 3, 'dob': '2020-04-03'
'_id': ObjectId('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'grade': 5, 'dob': '2020-04-09', 'age': 8

Eliminazione di un documento

Il modulo pymongo in Python ha due metodi, i.e., delete_one() e delete_many(), per eliminare documenti. Entrambi i metodi accettano un argomento che seleziona il documento da eliminare. Con il seguente codice, cancelleremo uno studente di nome 'John'.

>>> query = "nome": "Giovanni"
>>> col.delete_one(richiesta)
>>> per x in col.trova():
… stampa(x)
'_id': ObjectId('5f8f061ccb12c01f7420656f'), 'name': 'Mark', 'id': 2, 'grade': 5, 'dob': '2020-04-09', 'age': 8

Eliminare una raccolta

Possiamo rilasciare una raccolta in MongoDB usando il metodo drop() del modulo pymongo in Python. Per prima cosa, dobbiamo connetterci al database; quindi, selezioniamo il database che contiene la raccolta che vogliamo rimuovere. Dopo aver selezionato la collezione dal database, possiamo rimuovere la collezione usando il metodo drop(). Il codice seguente lascerà cadere gli studenti.

>>> import pymongo
>>> cliente = pymongo.MongoClient('mongodb://localhost:27017/')
>>> db = client['demo_db']
>>> col = db['studenti']
>>> col.far cadere()

Conclusione

La conoscenza dei database è essenziale se si vuole realizzare un'applicazione web. Quasi tutti i linguaggi di programmazione hanno framework e librerie per lo sviluppo web di backend. Python può essere utilizzato nello sviluppo web di backend e quindi possiamo interagire con i database usando Python mentre lavoriamo con i framework di backend Python. In questo articolo ti abbiamo mostrato come interagire con i database MongoDB e MySQL utilizzando semplici operazioni CRUD scritte in Python.

SuperTuxKart per Linux
SuperTuxKart è un fantastico titolo progettato per offrirti l'esperienza di Mario Kart gratuitamente sul tuo sistema Linux. È piuttosto impegnativo e ...
Tutorial Battaglia per Wesnoth
The Battle for Wesnoth è uno dei giochi di strategia open source più popolari a cui puoi giocare in questo momento. Non solo questo gioco è in svilupp...
0 A.D. Tutorial
Tra i tanti giochi di strategia in circolazione, 0 A.D. riesce a distinguersi come un titolo completo e un gioco molto profondo e tattico nonostante s...