2012-02-03 8 views
5

Questa domanda è probabilmente noobish.impostare un oggetto di connessione MySQLdb per più database

Invece di hardcoding dell'oggetto connessione MySQLdb: ad esempio,

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

Come faccio a impostarlo in modo che posso specificare il db_name (o di qualsiasi altra parte dell'oggetto connessione) da un elenco o qualche altra variabile . Per esempio:

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

risposta

6

Potreste installare una funzione che potrebbe restituire una nuova connessione al database in base al nome passato in

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

e quindi chiamare get_db_connection ogni volta che avete bisogno di usare un nuovo database..

Meglio, si potrebbe provare db.select_db('my_new_databasename') per passare da un database a un altro all'interno della stessa connessione. Ciò presuppone che db sia l'oggetto di connessione dalla chiamata MySQLdb.connect(). Ciò significa che non è necessario creare una nuova connessione ogni volta.

Di nota, la creazione di connessioni al database è costosa quindi cerca di evitare di crearle e gettarle via all'abbandono.

2

È possibile impostare un dizionario per memorizzare le connessioni oggetti

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

Quindi è possibile accedere al db utilizzando il dizionario o assegnare un locale per puntare anche alla connessione.

current_db = db_dict['db_name'] 
0

Io uso soprattutto lambda per un approccio più veloce (rapido nel senso della scrittura del codice, anche ci si sente più divinatorio).

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

allora si può semplicemente accedere al database:

mydb = db("MyDb")