Vai al contenuto principale

Collegare MongoDB a Python: i tuoi primi 10 minuti con PyMongo

Scopri cos'è PyMongo, perché gli sviluppatori Python lo usano con MongoDB e come collegare rapidamente MongoDB alla tua app Python.
· 5 min leggi

Scopri con l'IA

Pronto a collegare il tuo cluster MongoDB al tuo progetto Python? Sei fortunato. In questo tutorial scoprirai cos'è PyMongo, perché è il pacchetto di riferimento per gli sviluppatori Python che usano MongoDB come database e come avviare la tua prima connessione nel modo più efficiente possibile. 

Se stai iniziando ora, dai un'occhiata al nostro corso Introduzione all'uso di MongoDB per Data Science in Python.

Cos'è PyMongo?

Dunque, che cos'è esattamente il pacchetto Python PyMongo? Questo pacchetto è il driver Python ufficiale di MongoDB e consente agli sviluppatori di connettersi, interrogare e interagire con le loro applicazioni Python e i database MongoDB. 

È il modo consigliato per interagire con i tuoi database MongoDB da Python ed è ottimo per creare varie applicazioni web grazie alla sua compatibilità con Flask e Django. Aiuta davvero gli sviluppatori Python a sfruttare appieno MongoDB nelle loro applicazioni. 

Vediamo come iniziare con PyMongo eseguendo un'applicazione utente di esempio CRUD (create, read, update, delete) per mostrare quanto sia facile partire con il minimo codice! 

Requisiti per il successo 

Per seguire con successo questo tutorial, assicurati di avere i seguenti prerequisiti: 

  • Un account MongoDB Atlas
  • Un IDE a tua scelta (questo tutorial usa un notebook Google Colab)
  • Python 3.6+
  • pip installato (se stai usando un IDE diverso da un notebook Google Colab). 

Configurare un cluster MongoDB 

Prima di poter collegare il nostro database MongoDB al progetto Python, dobbiamo creare un cluster! Per farlo, accedi al tuo account MongoDB Atlas e crea un nuovo progetto, se non ne hai già uno. 

 Creazione di un progetto in MongoDB Atlas

 Poi, crea un cluster all'interno del progetto. 

Creazione di un cluster all'interno del progetto

Ora sei pronto per effettuare il deployment del tuo cluster. Clicca sul tier “Free” (è gratis per sempre!) e scegli un nome per il cluster o mantieni quello predefinito. 

Tieni presente che una volta scelto il nome del cluster non potrai cambiarlo. Scegli il provider cloud (puoi scegliere tra AWS, Google Cloud e Azure) e assicurati di essere nella regione corretta.

Deployment del tuo cluster

Clicca sul pulsante verde “Create Deployment” e possiamo continuare. 

Ti verrà chiesto di scegliere un “Username” e una “Password” per il tuo cluster. Scegli qualcosa di facile da ricordare (ma non tanto quanto quello in questo tutorial!), e comunque sicuro, perché ti serviranno ogni volta che accedi alla tua Connection String. 

Assicurati anche di cliccare sul pulsante “Preload sample dataset” per semplificarti la vita. Questo caricherà automaticamente il set di dati di esempio “sample_mflix” con cui lavoreremo. 

Clicca su “Create Database User” per continuare. 

Scelta di username e password

Ora puoi connetterti al tuo cluster! Ci sono molti modi per farlo, ma dato che questo tutorial è incentrato su PyMongo, ci connetteremo tramite Drivers. 

Connettiti al tuo cluster

Scegli “Python” e la versione che vuoi usare (noi sceglieremo la 4.7 o successiva) e vedrai la tua Connection String. Per comodità, username e password vengono compilati automaticamente.

Connessione con MongoDB Driver

Ora che hai la tua Connection String, conservala in un posto sicuro. Possiamo premere il pulsante verde “Done”. 

Ecco come appare il tuo cluster una volta configurato. 

Cluster una volta configurato]

Vai al pulsante “Network Access” sul lato sinistro dello schermo e assicurati che il tuo indirizzo IP sia configurato correttamente. Ai fini di questo tutorial (anche se ovviamente non è consigliato in produzione), puoi impostare il tuo IP su “Access from Anywhere” per semplicità. 

Avviso per la produzione: per app a livello di produzione, metti in whitelist IP specifici in Atlas in Network Access > IP Access List. 

Passiamo al tuo IDE preferito e giochiamo un po' con i dati a disposizione! 

Connessione ed esecuzione di operazioni CRUD con PyMongo

Il primo passo è usare pip per installare pymongo. In questo passaggio installiamo anche getpass perché vogliamo mantenere la nostra connessione sicura:

!pip install pymongo

Ora configuriamo la connessione MongoDB al nostro cluster. Useremo MongoClient per stabilire la connessione. 

import getpass
from pymongo import MongoClient


# Get connection string from user
connection_string = getpass.getpass(prompt="Enter connection string WITH USER + PASS here: ")


try:
   client = MongoClient(connection_string)
   client.admin.command("ping")
   print("Successfully connected")
  
except Exception as e:
   print("Connection failed:", e)

Torna nel tuo cluster per vedere il nome del database e della collection. Il database si chiama sample_mflix e la collection users. 

Ecco un esempio delle informazioni con cui stiamo lavorando in questo cluster di esempio. Abbiamo l'ObjectId di ogni documento e il nome, l'email e la password di ogni utente. 

La collection con cui stiamo lavorando

Facciamo un rapido test per assicurarci di poter leggere i nostri documenti dallo script: 

database = client["sample_mflix"]
collection = database["users"]

for document in collection.find().limit(20):
    print(document)

Una volta eseguito con successo, vedrai questo:

Assicurarci di essere correttamente connessi al database MongoDB

Nota: il dataset sample_mflix include password in chiaro per scopi dimostrativi. Nelle applicazioni reali, esegui sempre l'hash delle password (ad es. con bcrypt o Argon2) ed evita di inserire le credenziali in hardcode.

Quello è anche il nostro modo di leggere le informazioni nel cluster! Ora creiamo un nuovo utente. 

new_user = {
   "name": "Anaiya Raisinghani",
   "email": "[email protected]",
   "password": "pleasedonothackme"
}

# insert the document
result = collection.insert_one(new_user)

print(result.inserted_id)

Possiamo vedere il nuovo ID utente e, se torno nel mio cluster, posso cercare questo ID e verificare se compare il nuovo documento utente:

Ricerca del nostro nuovo documento utente

Ora aggiorniamo il documento appena creato. 

Nota: BSON è incluso con PyMongo: non è necessaria alcuna installazione extra. ObjectId è il formato ID univoco predefinito di MongoDB.

from bson import ObjectId

collection.update_one(
   {"_id": result.inserted_id}, # using the same document that we inserted above
   {"$set": {"password": "help!ivebeenhacked!!"}}
)

Abbiamo aggiornato il nostro documento

Come possiamo vedere, la password è stata aggiornata e la modifica è visibile nella UI di MongoDB Atlas. 

Ora eliminiamo questo documento. 

delete_user = collection.delete_one({"_id": result.inserted_id})

print("Deleted users:", delete_user.deleted_count)

Gli utenti eliminati saranno “1”. Facciamo un doppio controllo nella UI di MongoDB Atlas (per sicurezza!).

Abbiamo eliminato con successo il nostro utente

Abbiamo eliminato con successo il nostro documento! 

Conclusione

In questo tutorial abbiamo affrontato con successo i tuoi primi 10 minuti con PyMongo, il driver Python ufficiale di MongoDB. Abbiamo letto i documenti nella nostra collection, creato un nuovo utente, aggiornato quell'utente ed eliminato il documento!

Per ulteriori informazioni su PyMongo, dai un'occhiata al corso Introduzione all'uso di MongoDB per Data Science in Python e visita la documentazione ufficiale.

FAQs

Quali sono alcuni errori comuni quando si collega PyMongo a MongoDB?

I problemi tipici includono stringhe di connessione errate, restrizioni del firewall (whitelist degli IP) o errori di autenticazione. In caso di errore di connessione, controlla con attenzione le credenziali e le impostazioni di rete.

PyMongo supporta la programmazione asincrona?

PyMongo non supporta nativamente le operazioni asincrone. Se ti servono funzionalità async, valuta Motor, il driver Python asincrono ufficiale di MongoDB.

PyMongo può gestire le transazioni del database?

Sì, PyMongo supporta le transazioni ACID multi-documento, a condizione che tu stia usando replica set o cluster sharded di MongoDB. Le transazioni non sono disponibili sui deployment standalone.

Come gestisco il connection pooling in PyMongo?

PyMongo gestisce automaticamente il connection pooling dietro le quinte. Se necessario, puoi configurare i parametri del pool (come dimensione del pool e timeout) tramite le impostazioni di MongoClient.

Posso usare PyMongo con Pandas per attività di analisi dei dati?

Assolutamente! Puoi recuperare facilmente i dati MongoDB con PyMongo, quindi caricarli direttamente in DataFrame Pandas per analisi e manipolazione.

Anaiya Raisinghani

Autore

Anaiya Raisinghani

Anaiya è Developer Advocate presso MongoDB, con sede a New York City.

Argomenti

Correlato