Cursus
Klaar om je MongoDB-cluster te verbinden met je Python-project? Dan heb je geluk. In deze tutorial leer je wat PyMongo is, waarom het het standaardpakket is voor Python-ontwikkelaars die MongoDB als database gebruiken, en hoe je je eerste verbinding zo efficiënt mogelijk opzet.
Als je net begint, bekijk dan zeker onze cursus Introduction to Using MongoDB for Data Science in Python.
Wat is PyMongo?
Dus, wat is het PyMongo Python-pakket precies? Dit pakket is de officiële Python-driver van MongoDB en stelt ontwikkelaars in staat om verbinding te maken met, query’s uit te voeren op en te communiceren tussen hun Python-applicaties en MongoDB-databases.
Het is de aanbevolen manier om vanuit Python met je MongoDB-databases te werken en is geweldig voor het bouwen van diverse webapplicaties dankzij de compatibiliteit met Flask en Django. Het helpt Python-ontwikkelaars echt om MongoDB volop te benutten in hun verschillende applicaties.
Laten we bekijken hoe je aan de slag gaat met PyMongo door een voorbeeld van een CRUD- (create, read, update, delete) gebruikersapplicatie te draaien, om te laten zien hoe eenvoudig je met minimale code kunt starten!
Vereisten voor succes
Om deze tutorial met succes te volgen, zorg dat je het volgende hebt:
- Een MongoDB Atlas-account
- Een IDE naar keuze (deze tutorial gebruikt een Google Colab-notebook)
- Python 3.6+
pipgeïnstalleerd (als je een andere IDE gebruikt dan een Google Colab-notebook).
Een MongoDB-cluster instellen
Voordat we onze MongoDB-database met ons Python-project kunnen verbinden, moeten we een cluster aanmaken! Log hiervoor in op je MongoDB Atlas-account en maak een nieuw project aan als je dat nog niet hebt.
Maak vervolgens een cluster binnen het project aan.

Nu kun je je cluster deployen. Klik op de "Free"-laag (voor altijd gratis!) en kies een naam voor je cluster of laat de standaardnaam staan.
Houd er rekening mee dat je de naam van je cluster later niet kunt wijzigen. Kies de cloudprovider (je kunt kiezen uit AWS, Google Cloud en Azure) en zorg dat je de juiste regio selecteert.

Klik op de groene knop "Create Deployment" en we kunnen verder.
Je wordt gevraagd een "Username" en "Password" voor je cluster te kiezen. Kies iets dat je kunt onthouden (maar niet zo makkelijk als in deze tutorial!) en toch veilig is, want je hebt deze gegevens nodig telkens wanneer je je Connection String opent.
Zorg er ook voor dat je op de knop "Preload sample dataset" klikt om het jezelf makkelijker te maken. Hiermee wordt automatisch de voorbeelddataset "sample_mflix" geladen waar we mee gaan werken.
Klik op "Create Database User" om door te gaan.

Nu kun je verbinding maken met je cluster! Er zijn veel manieren om dit te doen, maar omdat deze tutorial zich richt op PyMongo, verbinden we via de Drivers.

Kies "Python" en de versie die je wilt gebruiken (wij kiezen versie 4.7 of later), en je ziet je Connection String. Je gebruikersnaam en wachtwoord worden voor het gemak automatisch ingevuld.

Nu je je Connection String hebt, sla hem ergens veilig op. We kunnen op de groene knop "Done" drukken.
Zo ziet je cluster eruit wanneer het is geconfigureerd.
![Cluster nadat het is geconfigureerd]](https://media.datacamp.com/cms/ad_4nxf2qowpihkjm1stvlc-ddf-wiee5pc64vmyac6z-hvxdhkucer83idgex9z73erlpem2bm4vgfq6sfqb8d5opoibgpxvlzlyenuri_fcicaw_7_6lrqpk9_djmzyjowquwtdndjzg.png)
Ga naar de knop "Network Access" aan de linkerkant van het scherm en controleer of je IP-adres correct is geconfigureerd. Voor deze tutorial (ook al is dit natuurlijk niet aanbevolen voor productie) kun je je IP-adres instellen op "Access from Anywhere" voor de eenvoud.
Waarschuwing voor productie: Voor apps op productieniveau, whitelist specifieke IP’s onder Network Access > IP Access List in Atlas.
Laten we naar je IDE naar keuze gaan en spelen met de data die we hebben!
Verbinden en CRUD-bewerkingen uitvoeren met PyMongo
Onze eerste stap is om met pip pymongo te installeren. We installeren in deze stap ook getpass omdat we onze verbinding veilig willen houden:
!pip install pymongo
Vervolgens richten we onze MongoDB-verbinding met ons cluster in. We gebruiken MongoClient om onze verbinding te maken.
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)
Ga terug naar je cluster om de naam van onze database en collectie te bekijken. De databasenaam is sample_mflix en de collectienaam is users.
Hier is een voorbeeld van de informatie waarmee we werken in dit voorbeeldcluster. We hebben de ObjectId van elk document, en de naam, e-mail en het wachtwoord van elke gebruiker.

Laten we een snelle test draaien om te controleren of we onze documenten vanuit ons script kunnen lezen:
database = client["sample_mflix"]
collection = database["users"]
for document in collection.find().limit(20):
print(document)
Als dit succesvol draait, zie je dit:

Opmerking: De sample_mflix-dataset bevat platte-tekstwachtwoorden voor demonstratiedoeleinden. Hash in echte applicaties altijd wachtwoorden (bijv. met bcrypt of Argon2) en hardcode geen inloggegevens.
Dat was meteen ook onze manier om de informatie in ons cluster te lezen! Laten we nu een nieuwe gebruiker aanmaken.
new_user = {
"name": "Anaiya Raisinghani",
"email": "fakeanaiya@gmail.com",
"password": "pleasedonothackme"
}
# insert the document
result = collection.insert_one(new_user)
print(result.inserted_id)
We zien het nieuwe gebruikers-ID, en als ik terugga naar mijn cluster kan ik naar dit ID zoeken en controleren of mijn nieuwe gebruikersdocument verschijnt:

Laten we nu het document dat we zojuist hebben gemaakt bijwerken.
Opmerking: BSON wordt met PyMongo geïnstalleerd—geen extra installatie nodig. ObjectId is het standaard unieke ID-formaat van MongoDB.
from bson import ObjectId
collection.update_one(
{"_id": result.inserted_id}, # using the same document that we inserted above
{"$set": {"password": "help!ivebeenhacked!!"}}
)

Zoals we zien is het wachtwoord bijgewerkt, en de wijziging is zichtbaar in de MongoDB Atlas-UI.
Laten we dit document nu verwijderen.
delete_user = collection.delete_one({"_id": result.inserted_id})
print("Deleted users:", delete_user.deleted_count)
Het aantal verwijderde gebruikers zal "1" zijn. Laten we dit nog even dubbelchecken in de MongoDB Atlas-UI (voor de zekerheid!).

We hebben ons document succesvol verwijderd!
Conclusie
In deze tutorial hebben we je eerste 10 minuten met PyMongo—de officiële Python-driver van MongoDB—succesvol doorgenomen. We hebben de documenten in onze collectie gelezen, een nieuwe gebruiker aangemaakt, die gebruiker bijgewerkt en verwijderd!
Voor meer informatie over PyMongo, bekijk de cursus Introduction to Using MongoDB for Data Science in Python en bezoek de officiële documentatie.
FAQs
Wat zijn veelvoorkomende fouten bij het verbinden van PyMongo met MongoDB?
Typische problemen zijn onjuiste connection strings, firewallbeperkingen (IP-whitelist) of authenticatiefouten. Controleer je inloggegevens en netwerksettings zorgvuldig als verbindingen mislukken.
Ondersteunt PyMongo asynchrone programmering?
PyMongo ondersteunt zelf geen async-bewerkingen. Als je async-functionaliteit nodig hebt, overweeg dan Motor, de officiële asynchrone Python-driver voor MongoDB.
Kan PyMongo databasetransacties afhandelen?
Ja, PyMongo ondersteunt ACID-transacties over meerdere documenten, mits je MongoDB replica sets of sharded clusters gebruikt. Transacties zijn niet beschikbaar op standalone-deployments.
Hoe ga ik om met PyMongo connection pooling?
PyMongo beheert connection pooling automatisch op de achtergrond. Je kunt poolparameters (zoals poolgrootte en timeout) configureren via MongoClient-instellingen indien nodig.
Kan ik PyMongo gebruiken met Pandas voor data-analytische taken?
Absoluut! Je kunt MongoDB-data eenvoudig ophalen met PyMongo en vervolgens rechtstreeks in Pandas DataFrames laden voor data-analyse en -manipulatie.


