Como en el tutorial de Perl se supone que ya tienes instalado MongoDB en tu sistema y sabes lo básico desde su propia interfaz.
Para usarlo en Python necesitamos instalar pymongo,el cual yo recomiendo que lo hagan con pip:
pip install pymongo
Ahora vamos a iniciar nuestro script de prueba:
Primero ponemos el hashbang y la codificación como siempre:
#!/usr/bin/env python3Ahora importamos MongoClient que es que usaremos para la consulta de datos,
from pymongo import MongoClient
Al igual que el tutorial de Perl vamos a usar los datos por defecto en host ponemos localhost y en puerto ponemos 27017:
cliente = MongoClient('localhost', 27017)
Como dije son los datos por defecto y esto lo sabe la API asi que es lo mismo eso de arriba y esto:
cliente = MongoClient()Con esto ya tenemos un objeto con los datos de mongo,digamos que es como si hubiéramos iniciado sesión en la shell de mongo.
Por ejemplo estas ordenes:
Como vemos aun esta lo que hicimos en el tutorial de Perl,para ver eso desde un script en Python vamos a hacer lo siguiente:
Teniendo el objeto cliente ya creado,vamos a acceder a la base de datos,en este caso test:
Podemos hacerlo con notacion de punto o en modo diccionario,recomiendo notacion de punto en este caso:
db = cliente.testPara autentificarnos usamos esta sintaxis:
db.authenticate('user', 'password')
Ahora la variable db ya es un objeto que contiene los datos de la base test,ahora vamos a acceder a la colección,en este caso use some_cool:
De igual manera notacion de punto o diccionario pero en esta ocasión operamos sobre la variable db:
coleccion = db["some_coll"]
En estos momentos la variable colección cuenta con los datos de la colección some_coll de Mongo,podemos usar funciones de la misma como por ejemplo ver el numero de elementos:
En la shell de Mongo usaríamos:
db.some_coll.count()
Adivinen como se hace en python? :
print(coleccion.count())
Así :D
Y para hacer lo que hicimos en la imagen?
db.some_coll.find()
Primero iteramos sobre la función find del objeto colección que creamos y despues imprimimos:
for i in coleccion.find():
En la función find podemos pasarle como parámetro un filtrado,por ejemplo:
for i in coleccion.find({"value" : "foobar"}):
print(i)
Bien ahora vamos a insertar datos desde pymongo,con un diccionario,por ejemplo:
1 2 3 4 5 6 | datos = { "_id" : 3, "value" : "Hola Mundo desde pymongo" } coleccion.insert(datos) |
1 2 3 4 5 6 7 8 9 10 11 12 | datos = [ { "Nombre": "Perl", "Archivos": [".pl",".cgi"], "Modulos": "CPAN" }, { "Nombre": "Python", "Archivos":[".py","pyo",".pyc"] "Modulos": ["easy_install","pip"] } ] |
Ahí creamos dos diccionarios adentro de una lista.
Para ver las bases colecciones disponibles,podemos usar:
db.collection_names()
Por ejemplo para recorrer todas las colecciones de una db:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/usr/bin/env python3 from pymongo import MongoClient cliente = MongoClient() db = cliente.test for collection in db.collection_names(): colecion = db[collection] print("Coleccion : %s\n\n") %(collection) print("Datos:\n") for i in colecion.find(): print(i) print("\n\n") |
Podemos hacer lo mismo con las bases de datos:
for dbs in cliente.database_names():
print(dbs)
Si nos ponemos a pensar podemos ver todos los datos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/usr/bin/env python3 from pymongo import MongoClient cliente = MongoClient() for dbs in cliente.database_names(): db = cliente[dbs] print("Base de datos %s\n") %(dbs) for collection in db.collection_names(): colecion = db[collection] print("Coleccion : %s\n\nDatos:\n") %(collection) for i in colecion.find(): print(i) print("\n\n") |
Que mas podemos hacer?
Podemos borrar databases con la función drop y le pasamos como parámetro el nombre de la base de datos:
cliente.drop_database("test_database")
Podemos saber la informacion del sistema de esta manera:
1 2 3 4 | info = cliente.server_info() for k,v in info.items(): print ("%s : %s ") %(k,v) |
Y muchas cosas mas:
Podemos borrar una colección asi:
db.drop_collection("some_coll")
Podemos borrar los datos de una colección asi:
coleccion.remove({"value" : "foobar"})Y mas,como supe esto,por la documentación claro,pero cuando no hay documentación y uno es autodidacta trabaja con lo que tiene a la mano,y podemos ver todas las funciones haciendo un dir sobre el objeto,eso es todo :D.
Documentación : api.mongodb.org/
Genial!.
ResponderBorrarSolo tengo una pregunta, vendra algun tuto haciendo uso de Sqlite?
PD: Me suscribi al "Newsletter" y no me llegan las notificaciones al email cada vez que hay contenido nuevo, a que crees que se deba?
Saludos!
Sqlite solo lo he usado en Android y iOS, pero deja echarle una ojeada al modulo de python y hago un tutorial cuando lo maneje,sobre lo Newsletter no tengo ni idea :\.
ResponderBorrarSaludos.
No hay problema. En espera compa :D!
ResponderBorrarSaludos!