2012-02-03 5 views
5

Esta pregunta es probablemente noobish.configurar un objeto de conexión MySQLdb para múltiples bases de datos

En lugar de codificar la conexión objeto MySQLdb: por ejemplo,

db = MySQLdb.connect('localhost','name','pwrd','db_name') 

¿Cómo puedo configurarlo para que pueda especificar el nombre_base_de_datos (o cualquier otra parte del objeto de conexión) desde una lista o alguna otra variable . Por ejemplo:

for NAME from list_of_names: 
    db = MySQLdb.connect('localhost', 'name', 'pwrd', NAME) 

Respuesta

6

usted puede configurar una función que devolvería una nueva conexión de base de datos basado en el nombre pasado en

def get_db_connection(database_name): 
    return MySQLdb.connect('localhost', 'name', 'pwrd', database_name) 

y luego llamar get_db_connection cada vez que tenía que utilizar una nueva base de datos..

Mejor, puede probar db.select_db('my_new_databasename') para cambiar de una base de datos a otra dentro de la misma conexión. Esto supone que db es su objeto de conexión de la llamada MySQLdb.connect(). Esto significa que no necesita construir una nueva conexión cada vez.

Cabe destacar que la creación de conexiones de bases de datos es costosa, por lo tanto, intente evitar crearlas y descartarlas al abandonarlas.

2

Puede configurar un diccionario para almacenar sus conexiones objetos

db_dict = {} 
for NAME from list_of_names: 
    db_dict[NAME] = MySQLdb.connect('localhost', 'name', 'pwrd', NAME) 

luego podrás acceder a la base de datos usando el diccionario o asignar un local también para que apunte a la conexión.

current_db = db_dict['db_name'] 
0

Uso principalmente lambdas para un enfoque más rápido (rápido en el sentido de escribir el código, también se siente más pitónico).

db = lambda(db): MySQLdb.connect(host="127.0.0.1",user="user",passwd="pwd",db=db) 

A continuación, puede acceder a la base de datos:

mydb = db("MyDb") 
Cuestiones relacionadas