Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为多个数据库设置MySQLdb连接对象_Python_Database Connection_Mysql Python - Fatal编程技术网

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

Python 为多个数据库设置MySQLdb连接对象,python,database-connection,mysql-python,Python,Database Connection,Mysql Python,这个问题很可能是无意义的 而不是对MySQLdb连接对象进行硬编码:例如 db = MySQLdb.connect('localhost','name','pwrd','db_name') 如何设置它,以便从列表或其他变量中指定db_名称(或连接对象的任何其他部分)。例如: for NAME from list_of_names: db = MySQLdb.connect('localhost', 'name', 'pwrd', NAME) 您可以设置一个函数,该函数将根据传入的名称

这个问题很可能是无意义的

而不是对MySQLdb连接对象进行硬编码:例如

db = MySQLdb.connect('localhost','name','pwrd','db_name')
如何设置它,以便从列表或其他变量中指定db_名称(或连接对象的任何其他部分)。例如:

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

您可以设置一个函数,该函数将根据传入的名称返回新的数据库连接

def get_db_connection(database_name):
    return MySQLdb.connect('localhost', 'name', 'pwrd', database_name)
然后在需要使用新数据库时调用get_db_connection

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


需要注意的是,创建数据库连接的成本很高,因此请尽量避免创建数据库连接并将其丢弃。

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

db_dict = {}
for NAME from list_of_names:
   db_dict[NAME] = MySQLdb.connect('localhost', 'name', 'pwrd', NAME)
然后,您可以使用字典访问数据库,或者为连接指定一个本地点

current_db = db_dict['db_name']

我通常使用lambdas来实现更快的方法(编写代码的速度很快,而且感觉更像python)

然后,您只需通过以下方式访问数据库:

mydb = db("MyDb")
mydb = db("MyDb")