Hace un mes aproximadamente agregué el paquete de MongoEngine al repositorio oficial de Fedora, actualmente esta disponible desde Fedora 17 en adelante; MongoEngine es un mapeador de documentos muy similar a un ORM como los que encontramos en Django, a diferencia que MongoEngine trabaja con MongoDB y por esa razón es un mapeador de documentos y no relacional, del resto todo es similar… Se define un esquema, se inserta, modifica, elimina y busca aplicando POO en Python.
Ahora, les traigo un ejemplo sencillo para que vean como trabaja este modulo que se instala fácilmente en Fedora (yum install -y python-mongoengine)
El ejemplo
En el siguiente ejemplo se define un documento Usuario con nombre, apellido y correo. Ademas hay 2 funciones de agregado y borrado. Esta comentado y prácticamente auto explicado, aun así lo agregare por parte.
Importando el modulo
1 2 | #Importamos los modulos de MongoEngine from mongoengine import * |
Definiendo el esquema
1 2 3 4 5 | #Campos de los documentos de la coleccion Usuario class Usuario(Document): correo = StringField(required=True) nombre = StringField(max_length=50) apellido = StringField(max_length=50) |
Funcion de Inserción
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def agregar_usuario(nombre, apellido, correo): """ Agrega un nuevo documento usuario a la coleccion Usuario """ print"Agregando al usuario con nombre: ", nombre usuario = Usuario() usuario.nombre= nombre usuario.apellido= apellido usuario.correo= correo if usuario.save(): print"El usuario con nombre: ", nombre , \ " ha sido agregado.\n" |
Función de Eliminación
1 2 3 4 5 6 7 8 | def borrar_usuario(nombre): """ Elimina un documento de la coleccion usuario """ usuario = Usuario.objects(nombre = nombre)[0] print"El usuario con nombre: ", usuario.nombre," sera eliminado." usuario.delete() |
Función Main()
Aquí debo mencionar que la BD a usar es prueba, que en mi caso ya configure un usuario y contraseña (http://www.yograterol.me/configurando-control-de-accesso-a-mongodb-con-autenticacion/).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | def main(): #Conexion al servidor #connect(BD, username='', password='') #Conecta al servidor local si no se le envia el parametro #host='' connect('prueba', username='prueba', password='prueba') #Agregando un usuario agregar_usuario("Yohan","Graterol", "yohangraterol92 (a r r o b a s i n s p a m) g m a i l dot com") #Busqueda e impresion de los usuarios en la coleccion for usuario in Usuario.objects: print"Nombre: ", usuario.nombre print"Apellido: ", usuario.apellido print"Correo: ", usuario.correo #Se elimina el usuario borrar_usuario("Yohan") if __name__ =="__main__": main() |
Allí pueden ver el código e ir analizando lo que realiza. La salida del programa es lo siguiente.
1 2 3 4 5 6 7 8 | Agregando al usuario con nombre: Yohan El usuario con nombre: Yohan ha sido agregado. Nombre: Yohan Apellido: Graterol Correo: yohangraterol92 (a r r o b a s i n s p a m) g m a i l dot com El usuario con nombre: Yohan sera eliminado. |
Pueden conseguir todo el código en https://github.com/yograterol/python-ejemplos