Esercizi Inserimento MongoDB Python
Codegrind Team•Jul 10 2024
Esercizi sull’inserimento di dati in un database MongoDB utilizzando le librerie Python pymongo
e motor
. Gli esercizi includono sia inserimenti singoli che multipli, con approcci sequenziali e orientati agli oggetti (OOP).
Esercizio 1: Inserimento Singolo con pymongo (Sequenziale)
Inserire un singolo documento in una collezione utilizzando pymongo.
from pymongo import MongoClient
def insert_single_document():
client = MongoClient('mongodb://localhost:27017/')
db = client['testdb']
collection = db['employees']
document = {"name": "John Doe", "position": "Software Engineer"}
result = collection.insert_one(document)
print("Documento inserito con ID:", result.inserted_id)
client.close()
insert_single_document()
Esercizio 2: Inserimento Multiplo con pymongo (OOP)
Inserire più documenti in una collezione utilizzando pymongo e OOP.
from pymongo import MongoClient
class MongoDBConnection:
def __init__(self, uri, db_name, collection_name):
self.client = MongoClient(uri)
self.db = self.client[db_name]
self.collection = self.db[collection_name]
def insert_multiple_documents(self, documents):
result = self.collection.insert_many(documents)
print("Documenti inseriti con IDs:", result.inserted_ids)
def close(self):
self.client.close()
# Uso
db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
documents = [
{"name": "Alice Smith", "position": "Data Scientist"},
{"name": "Bob Johnson", "position": "Project Manager"}
]
db_connection.insert_multiple_documents(documents)
db_connection.close()
Esercizio 3: Inserimento Singolo con motor (Sequenziale)
Inserire un singolo documento in una collezione utilizzando motor.
import motor.motor_asyncio
import asyncio
async def insert_single_document():
client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://localhost:27017/')
db = client['testdb']
collection = db['employees']
document = {"name": "Jane Doe", "position": "Analyst"}
result = await collection.insert_one(document)
print("Documento inserito con ID:", result.inserted_id)
client.close()
# Uso
asyncio.run(insert_single_document())
Esercizio 4: Inserimento Multiplo con motor (OOP)
Inserire più documenti in una collezione utilizzando motor e OOP.
import motor.motor_asyncio
import asyncio
class MongoDBConnection:
def __init__(self, uri, db_name, collection_name):
self.client = motor.motor_asyncio.AsyncIOMotorClient(uri)
self.db = self.client[db_name]
self.collection = self.db[collection_name]
async def insert_multiple_documents(self, documents):
result = await self.collection.insert_many(documents)
print("Documenti inseriti con IDs:", result.inserted_ids)
def close(self):
self.client.close()
# Uso
async def main():
db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
documents = [
{"name": "Charlie Brown", "position": "Developer"},
{"name": "Dana White", "position": "Designer"}
]
await db_connection.insert_multiple_documents(documents)
db_connection.close()
asyncio.run(main())
Esercizio 5: Inserimento Singolo con pymongo con gestione delle eccezioni (Sequenziale)
Inserire un singolo documento utilizzando pymongo con gestione delle eccezioni.
from pymongo import MongoClient, errors
def insert_single_document():
client = MongoClient('mongodb://localhost:27017/')
db = client['testdb']
collection = db['employees']
document = {"name": "Eva Green", "position": "HR Manager"}
try:
result = collection.insert_one(document)
print("Documento inserito con ID:", result.inserted_id)
except errors.PyMongoError as e:
print("Errore nell'inserimento:", e)
finally:
client.close()
insert_single_document()
Esercizio 6: Inserimento Multiplo con pymongo con gestione delle eccezioni (OOP)
Inserire più documenti utilizzando pymongo e gestione delle eccezioni in modalità OOP.
from pymongo import MongoClient, errors
class MongoDBConnection:
def __init__(self, uri, db_name, collection_name):
self.client = MongoClient(uri)
self.db = self.client[db_name]
self.collection = self.db[collection_name]
def insert_multiple_documents(self, documents):
try:
result = self.collection.insert_many(documents)
print("Documenti inseriti con IDs:", result.inserted_ids)
except errors.PyMongoError as e:
print("Errore nell'inserimento:", e)
def close(self):
self.client.close()
# Uso
db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
documents = [
{"name": "Fiona Apple", "position": "Musician"},
{"name": "George Harrison", "position": "Guitarist"}
]
db_connection.insert_multiple_documents(documents)
db_connection.close()
Esercizio 7: Inserimento Singolo con motor e gestione delle eccezioni (Sequenziale)
Inserire un singolo documento utilizzando motor con gestione delle eccezioni.
import motor.motor_asyncio
import asyncio
async def insert_single_document():
client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://localhost:27017/')
db = client['testdb']
collection = db['employees']
document = {"name": "Hank Moody", "position": "Writer"}
try:
result = await collection.insert_one(document)
print("Documento inserito con ID:", result.inserted_id)
except Exception as e:
print("Errore nell'inserimento:", e)
finally:
client.close()
# Uso
asyncio.run(insert_single_document())
Esercizio 8: Inserimento Multiplo con motor e gestione delle eccezioni (OOP)
Inserire più documenti utilizzando motor e gestione delle eccezioni in modalità OOP.
import motor.motor_asyncio
import asyncio
class MongoDBConnection:
def __init__(self, uri, db_name, collection_name):
self.client = motor.motor_asyncio.AsyncIOMotorClient(uri)
self.db = self.client[db_name]
self.collection = self.db[collection_name]
async def insert_multiple_documents(self, documents):
try:
result = await self.collection.insert_many(documents)
print("Documenti inseriti con IDs:", result.inserted_ids)
except Exception as e:
print("Errore nell'inserimento:", e)
def close(self):
self.client.close()
# Uso
async def main():
db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
documents = [
{"name": "Ivan Drago", "position": "Boxer"},
{"name": "Jack Torrance", "position": "Caretaker"}
]
await db_connection.insert_multiple_documents(documents)
db_connection.close()
asyncio.run(main())
Esercizio 9: Inserimento Singolo con pymongo e verifica esistenza documento (Sequenziale)
Inserire un singolo documento utilizzando pymongo e verificare se il documento esiste già .
from pymongo import MongoClient
def insert_single_document():
client = MongoClient('mongodb://localhost:27017/')
db = client['testdb']
collection = db['employees']
document = {"name": "Karen Page", "position": "Journalist"}
if collection.count_documents(document) == 0:
result = collection.insert_one(document)
print("Documento inserito con ID:", result.inserted_id)
else:
print("Il documento esiste già .")
client.close()
insert_single_document()
Esercizio 10: Inserimento Multiplo con motor e verifica esistenza documenti (OOP)
Inserire più documenti utilizzando motor e verificare se i documenti esistono già in modalità OOP.
import motor.motor_asyncio
import asyncio
class MongoDBConnection:
def __init__(self, uri, db_name, collection_name):
self.client = motor.motor_asyncio.AsyncIOMotorClient(uri)
self.db = self.client[db_name]
self.collection = self.db[collection_name]
async def insert_multiple_documents(self, documents):
for document in documents:
if await self.collection.count_documents(document) == 0:
try:
result = await self.collection.insert_one(document)
print("Documento inserito con ID:", result.inserted_id)
except Exception as e:
print("Errore nell'inserimento:", e)
else:
print("Il documento esiste già :", document)
def close(self):
self.client.close()
# Uso
async def main():
db_connection = MongoDBConnection('mongodb://localhost:27017/', 'testdb', 'employees')
documents = [
{"name": "Lara Croft", "position": "Adventurer"},
{"name": "Mario Rossi", "position": "Plumber"}
]
await db_connection.insert_multiple_documents(documents)
db_connection.close()
asyncio.run(main())