MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Programmazione di database Python con MongoDB per principianti

Lo scopo di questo tutorial sulla programmazione del database Python è di fornire un'introduzione delicata all'utilizzo di un database NoSQL come archivio dati per le applicazioni Python. Il pubblico previsto è costituito da sviluppatori di livello principiante o sviluppatori di livello intermedio che hanno familiarità con l'utilizzo di database orientati a SQL come Oracle, SQL Server o MySQL. Le dimostrazioni in questo articolo saranno parallele alle dimostrazioni utilizzate in altri articoli di programmazione di database SQL che coinvolgono Python, come la programmazione di database Python con SQL Express per principianti e, allo stesso modo, utilizzeranno Python 3.

Cos'è NoSQL?

La popolarità di Python continua a crescere in popolarità in parte grazie alla facilità con cui può funzionare con le nuove tecnologie. Una di queste "nuove" tecnologie è l'uso di database "NoSQL". Una delle caratteristiche più interessanti di questi tipi di database è il fatto che, come suggerisce il nome, generalmente non esiste un linguaggio di query aggiuntivo, come una delle apparentemente molte varianti di SQL, che deve essere appreso per poter lavorare con il database dal punto di vista programmatico. Ciò facilita notevolmente lo sviluppo dell'applicazione perché le strutture dati native del linguaggio di programmazione e la sua sintassi sono de facto il "linguaggio di query", a condizione ovviamente che i moduli appropriati vengano aggiunti all'ambiente di sviluppo.

Database NoSQL, oltre a principalmente non utilizzando un linguaggio di query, strutturare i dati anche internamente in modo notevolmente diverso dai database SQL. Uno sviluppatore che è più abituato al paradigma di programmazione SQL deve adattare il proprio pensiero per adattarsi al modo in cui NoSQL fa affari. Andando oltre, il design dei server di database NoSQL condivide la stessa dissomiglianza. I server di database NoSQL sono più focalizzati sulla velocità e la scalabilità con "coerenza finale", al contrario dei server di database SQL che sono più focalizzati sulla coerenza immediata.

Cos'è MongoDB?

MongoDB è uno dei tanti database "NoSQL". Come MariaDB, utilizza il proprio sistema di username e password per la gestione degli accessi. MongoDB, oltre a offrire un software server scaricabile a costo zero, offre anche un'opzione introduttiva basata su cloud a costo zero (tramite il suo Atlas offerta) che riduce la necessità di scaricare e configurare un'istanza. Le dimostrazioni in questo tutorial sulla programmazione del database utilizzeranno l'istanza gratuita ospitata nel cloud di MongoDB.

Come nel caso di Python e di qualsiasi server di database, un modulo driver di database aggiuntivo, ovvero PyMongo , è necessario affinché Python comunichi con il server MongoDB e tutti i database in esso contenuti. Inoltre, come qualsiasi server di database, MongoDB fornisce uno strumento di gestione complementare chiamato MongoDB Shell . Le dimostrazioni in questo articolo utilizzeranno un database MongoDB creato utilizzando questo strumento. Nota che MongoDB Shell è uno dei tanti strumenti di gestione esistenti per MongoDB.

  • Download del server della comunità MongoDB
  • Offerta introduttiva MongoDB basata su cloud a costo zero
  • Download della shell MongoDB

Si prega di notare che i collegamenti pubblicati erano attivi al momento della stesura di questo articolo. Se i link non sono più attivi, questi prodotti possono essere scaricati tramite il proprio motore di ricerca preferito.

Come configurare MongoDB per lo sviluppo software

L'offerta introduttiva basata su cloud a costo zero di MongoDB la configurazione è interamente web-based. Può essere comodamente collegato al proprio account Google ai fini del single sign-on. Basta tenere a mente i seguenti avvertimenti:

  • Scegli un servizio di hosting di dati fisicamente nelle vicinanze. Il servizio di hosting mostrato in questo articolo che si trova in Virginia potrebbe non essere l'ideale per qualcuno che è lontano da lì.
  • La password utilizzata per connettere un'applicazione al server di database deve essere salvata in modo sicuro poiché non può essere recuperata in caso di smarrimento. Può essere solo ripristinato.
  • Il nome del cluster, una volta impostato, non può essere modificato. Le dimostrazioni in questo articolo utilizzeranno un cluster denominato Cluster0 .
  • Assicurati che qualsiasi indirizzo IP da cui qualsiasi applicazione, inclusa MongoDB Shell, sia configurato nelle impostazioni di sicurezza.
  • La shell MongoDB potrebbe non avere un programma di installazione. Assicurati sempre di includere il percorso della cartella che contiene questa applicazione nel percorso del sistema operativo.

Come connettersi al server di database MongoDB

Dopo aver configurato correttamente il cluster MongoDB basato su cloud, sarà necessario annotare la particolare stringa di connessione utilizzata per connettersi ad esso. Le stringhe seguenti possono essere recuperate anche accedendo al sito MongoDB Atlas e facendo clic su Connetti pulsante:

Figura 1:dashboard Atlas di MongoDB con il pulsante Connect evidenziato

Nota, le impostazioni come il nome utente e la password del database e gli intervalli IP consentiti per la connessione possono essere impostati rispettivamente nei collegamenti Accesso al database e Accesso alla rete.

Di seguito sono riportati due esempi di connessione. Il primo è per MongoDB Shell.

MongoDB:connessione dalla riga di comando

Apertura di un Prompt dei comandi di Windows è spiegato in Programmazione di database Python con SQL Express per principianti in Apertura di Windows del prompt dei comandi intestazione.

Figura 2 – Connessione tramite riga di comando a MongoDB Shell

Si noti che il comando per aprire la shell MongoDB varia in base al sistema operativo. Il nome del cluster può variare e i parametri evidenziati nel comando dovranno essere modificati con i dettagli della configurazione MongoDB basata su cloud. In Windows, questo comando è chiamato mongosh . Tieni presente che il nome del database RazorDemo è incluso di seguito, poiché questo è il database che verrà utilizzato nelle dimostrazioni in questo tutorial di programmazione. Il comando accetta anche un parametro aggiuntivo per la password come mostrato di seguito:

Figura 3 – Autenticazione con la password nella riga di comando.

Nota, sebbene sia conveniente per scopi di sviluppo utilizzare la password nella riga di comando, invece di doverla digitare ogni volta, tieni presente che la password compare nella cronologia dei comandi eseguiti in precedenza. Questa opzione non deve essere utilizzata in ambienti di sviluppo in cui altri utenti possono accedere alla cronologia dei comandi precedenti.

Inoltre, si spera, nessuno pensava che avrei effettivamente utilizzato 123456 come password, giusto?

Figura 4 – Solo controllo 🙂

Nota che in entrambi gli esempi precedenti, il ^ il carattere viene utilizzato come simbolo di continuazione di riga nel prompt dei comandi di Windows.

Collegamento di MongoDB da Python

La seguente stringa, con opportune modifiche, può essere inserita nel codice Python per l'uso da parte di PyMongo conducente:

Figura 5 – Connessione tramite Python e PyMongo

Nella stringa di connessione sopra, il nome del database RazorDemo verrà utilizzato al posto di myFirstDatabase .

Come creare un database in MongoDB

MongoDB non "crea" un database finché quel database non viene "utilizzato" e i dati non vengono effettivamente scritti in esso. L'immagine seguente mostra una connessione riuscita al servizio MongoDB Atlas utilizzando RazorDemo database, ma non è presente alcun database di questo tipo nell'elenco quando si utilizza show dbs comando:

Figura 6 – Nessun database RazorDemo... ancora

Come "utilizzare" un database in MongoDB

In MongoDB, un database viene "usato" ogni volta che è collegato direttamente utilizzando la stringa di query o quando il nome del database è l'argomento di use comando. Nota come invocando questo comando sul database attualmente selezionato viene visualizzato un messaggio diverso rispetto al passaggio a quel database:

Figura 7 – Passaggio da un database all'altro

Per “creare” effettivamente il database è necessario inserire alcuni dati. La RazorDemo database degli articoli precedenti, Guida introduttiva alle pagine Razor con C# e programmazione di database Python con SQL Express per principianti, utilizza due tabelle, ovvero Artisti e Album . In MongoDB, ciò che un database orientato a SQL chiama una tabella viene chiamato raccolta . Creazione di due voci in raccolte denominate Artisti e Album , rispettivamente, creerà sia il database che le raccolte.

Ogni voce in una raccolta viene definita documento . Questo è analogo a un record in una tabella di database orientata a SQL.

Nota, così come è importante per un'applicazione principale salvare la crea tabella istruzioni in un database orientato a SQL, lo stesso ragionamento si applicherà anche al database iniziale e ai comandi di creazione della raccolta per un database MongoDB per un'applicazione principale.

I comandi seguenti creeranno gli Artisti raccolta inserendo un singolo documento al suo interno, quindi interrogare gli Artisti raccolta per verificare il successo dell'operazione di inserimento. Nota come l'operazione di inserimento utilizza la sintassi JSON:

db.Artists.insertOne({artist_name: "Skeered Tigon Stripes"})

db.Artists.find({})

Listing 1 - Inserting a new document.

Questi comandi forniscono il seguente output in MongoDB Shell:

Figura 8 – Creazione della collezione Artists

Il _id mostrato sopra è stato creato automaticamente ed è univoco all'interno della raccolta, simile a un valore di chiave primaria generato automaticamente in un database orientato a SQL.

Nota, MongoDB Shell potrebbe segnalare che .insert() il comando è deprecato. Questo esempio utilizza .insertOne() comando in quanto è una delle alternative fornite.

Una sintassi simile può essere utilizzata per creare gli Album collezione:

db.Albums.insertOne({artist_name: "Skeered Tigon Stripes",album_name: "Genetically Engineered Critters"})

db.Albums.find({})

Listing 2 - Inserting another new document

Figura 9 – Creazione della raccolta Album

Nota, l'avviso relativo a caniuse-lite viene visualizzato quando si preme il pulsante Invio chiave prima di completare il comando per creare un documento. MongoDB Shell consentirà di suddividere un comando su più righe prima di completarlo. Questo avviso indica che MongoDB Shell potrebbe utilizzare un driver obsoleto e dovrà essere aggiornato in una versione futura.

Non sembra interrompere il processo di creazione del documento.

Altri documenti per gli Album collezione:

db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Volume Control: No" })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Verse Vica })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Rotten to the Core" })

db.Albums.find({})

Listing 3 - Additional documents for the Albums collection

Figura 10 – Nuovi documenti Album aggiuntivi

NESSUN vincolo di chiave esterna

Poiché MongoDB non è un sistema di gestione di database relazionali, non fornisce un meccanismo per imporre i tipi di vincoli di chiave esterna utilizzati nelle tabelle di database orientate a SQL tra le raccolte. Si aspetta che l'applicazione mantenga e faccia rispettare tali relazioni. Nel contesto di MongoDB Shell, spetta allo sviluppatore digitare correttamente i valori per garantire che sia possibile dedurre una relazione tra i documenti nelle raccolte.

Il .deleteOne() comando può essere utilizzato per eliminare i documenti inseriti in modo errato:

db.Albums.deleteOne({ artist_name: "Skeered Tigon Stripes", album_name: "I Typed the Album Name Wrong" })
Listing 4 - Deleting a document.

Si noti che, se un documento non corrisponde ai parametri inseriti, non verrà visualizzato alcun errore, invece il messaggio di conferma mostrerà che non è stato eliminato nulla:

Figura 11 – Messaggio di conferma che non mostra documenti eliminati

Il .deleteMany() Il comando può essere utilizzato per eliminare più record che corrispondono a un criterio JSON. Il comando seguente elimina tutti i documenti nelle raccolte Album in cui il nome_artista il valore non è Skeered Tigon Stripes :

db.Albums.deleteMany({artist_name: {$ne : "Skeered Tigon Stripes" }})

Listing 5 - Deleting multiple documents based on criteria.

Figura 12 – Eliminazione di più record

Considerazioni finali sulla programmazione di database Python con MongoDB

Ora che abbiamo imparato come connetterci a un database MongoDB e come creare una versione NO SQL di una tabella con "record", possiamo passare a lavorare con gli script Python per inserire dati nel nostro database MongoDB. Continueremo la discussione nella seconda e ultima parte di questo tutorial sulla programmazione di database Python:Sviluppo di database Python e MongoDB.