2012-02-03 69 views
5

这个问题很可能不会。为多个数据库设置一个MySQLdb连接对象

而是硬编码MySQLdb的连接对象的:例如,

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

如何设定,让我可以指定从列表或其他一些变量DB_NAME(或连接对象的任何其他部分) 。 E.g:

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

回答

6

,你可以设置,将返回基于传入的名称一个新的数据库连接的功能

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

,然后调用get_db_connection每当你需要使用一个新的数据库。

更好的是,您可以尝试db.select_db('my_new_databasename')在同一连接内从一个数据库切换到另一个数据库。这假设db是来自MySQLdb.connect()调用的连接对象。这意味着你不需要每次都建立一个新的连接。

值得注意的是,创建数据库连接是很昂贵的,所以尽量避免创建它们并丢弃它们。

2

你可以设置一个字典来存储你的连接对象

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

然后你可以使用字典访问数据库或指定一个地方也指向连接。

current_db = db_dict['db_name'] 
0

我主要是使用lambda作为一个更快的方法(快速的编写代码,感觉更pythonic)。

mydb = db("MyDb") 

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

然后,你可以通过简单地访问数据库