为多个数据库设置MySQLdb连接对象

5

这个问题可能是新手问题。

不要硬编码MySQLdb连接对象,例如:

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

我该如何设置,以便我可以从列表或其他变量中指定db_name(或连接对象的任何其他部分)?例如:
for NAME from list_of_names:
    db = MySQLdb.connect('localhost', 'name', 'pwrd', NAME)
3个回答

8
您可以设置一个函数,该函数将根据传入的名称返回一个新的数据库连接。
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表达式以快速处理问题(之所以快速,是因为编写代码的感觉更符合Python风格)。

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

然后,您可以通过以下方式简单地访问数据库:

mydb = db("MyDb")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接