2012-02-03 20 views
5

この質問はおそらくnoobishです。複数のデータベースのMySQLdb接続オブジェクトを設定する

代わりのMySQLdb接続オブジェクトをハードコーディングする:私は、私は、リストまたはいくつかの他の変数からDB_NAME(または接続オブジェクトの他の部分)を指定することができ、それを設定するにはどうすればよい例えば、

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

。例えば:その後、

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')同じ接続内のあるデータベースから別のデータベースに切り替えることをお勧めします。これは、がMySQLdb.connect()コールからの接続オブジェクトであることを前提としています。つまり、毎回新しい接続を構築する必要はありません。

データベース接続を作成するのは高価ですので、作成しないで放棄してください。あなたの接続を格納するための

2

あなたができるセットアップ辞書には、次にあなたが辞書を使用してDBにアクセスしたり、接続を指すようにローカルに割り当てることができます

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

オブジェクト。

current_db = db_dict['db_name'] 
0

私はたいていラムダを使ってコードを書いているのが素早く、さらにピニスのように感じます。

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

次に、あなたは、単純にすることで、データベースにアクセスすることができます。

mydb = db("MyDb") 
関連する問題