27 de enero de 2013

Obtener un identificador de base de datos en MongoDB desde Python

En el post anterior sobre MongoDB y Python, se realizó una simple conexión a MongoDB, ya con esta conexión se está en la facultad de seleccionar cualquier base de datos y manejarla, en este post se mostrará como seleccionar una base de datos y conseguir su identificador usando el código anterior.

Instanciando un objeto de base de datos

Hay que recordar, que las base de datos en MongoDB se crean de manera dinámica, así que si una base de datos no existe a la hora de llamarla desde Python, no arrojara ningún error, sencillamente estará a la espera de un documento para crear la base de datos, a continuación les dejo el código del post sobre conexión a MongoDB desde Python, con las modificaciones para conseguir la instancia de una base de datos ya teniendo la conexión.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""
Ejemplo de conexion e instancia de BD en MongoDB usando PyMongo
"""


# Importamos los modulos Connection y ConnectionFailure
from pymongo import Connection
from pymongo.errors import ConnectionFailure

def main():
    """Conectando a MongoDB y manejando los errores"""

    # Usamos Try ... Execept para manejar cualquier error
    # de conexion
    try:
        print "Conectando a MongoDB en localhost:27017"
        # Se crea un Objeto tipo conexion pasando dos parametros
        # host -- La direccion de dominio o ip del servidor
        # port -- El puerto que escucha MongoDB
        conexion = Connection(host="localhost", port=27017)
        print "Conexion satisfactoria"
    except ConnectionFailure, e:
        # Si el servidor no se encuentra, mostrara el siguiente mensaje
        print "No se pudo conectar a MongoDB - Error: %s" % e
    else:
        # Si la conexion es satisfactoria, procedemos a seleccionar
        # la BD, solamente asignando la instancia de la BD y almacenandola
        # en una variable, en este caso llamada "db"
        db = conexion["db_ejemplo"]

        # Se comprueba si el metodo connection arroja el mismo valor que la
        # variable conexion (La condicion debe ser True, sino arroja una excepcion)
        assert db.connection == conexion
        print "Base de datos instanciada correctamente"

if __name__ == "__main__":
  main()
En este caso usamos la misma estructura de Try… Except, pero agregando la clausula else a la estructura, todo lo que este dentro del else, se ejecutara si todo el código dentro del try se ejecuta con éxito sin arrojar alguna excepción.
La salida es la siguiente:
1
2
3
4
python conexion-27-01-2013.py
Conectando a MongoDB en localhost:27017
Conexion satisfactoria
Base de datos instanciada correctamente

No hay comentarios:

Publicar un comentario