2012-02-03 18 views
5

Bu soru büyük olasılıkla noobish. Bunun yerine MySQLdb bağlantı nesnesi hardcodingÇoklu veritabanları için bir MySQLdb bağlantı nesnesi ayarlama

: örneğin

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

nasıl yüzden bir liste veya başka değişkenden db_name (veya bağlantı nesnesinin başka parçası) belirtebilirsiniz onu kurarım . Örn:

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

cevap

6

kurulum geçirilen adına göre yeni bir veritabanı bağlantısı dönecekti bir işlevi olabilir Sen

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

ve yeni bir veritabanını kullanmak için gereken zaman sonra get_db_connection diyoruz..

Daha iyi, aynı veritabanında bir veritabanından diğerine geçmek için db.select_db('my_new_databasename') numaralı bağlantıyı deneyebilirsiniz. Bu, MySQLdb.connect() çağrısından db bağlantı nesnesinin olduğunu varsayar. Bu, her seferinde yeni bir bağlantı kurmanıza gerek olmadığı anlamına gelir. Not: Veritabanı bağlantılarının oluşturulması pahalı olduğundan, bunları oluşturmamaya ve bunları terk etmekten kaçınmaya çalışın.

2

Sen kurulum bir sözlük bağlantılarınızı saklamak için olabilir

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

Sonra sözlük kullanılarak db erişmek veya ayrıca bağlantı işaret edecek bir yerel atayabilirsiniz nesneleri.

current_db = db_dict['db_name'] 
0

çoğunlukla (ayrıca daha pythonic hissediyor kod yazarken anlamında hızlı) daha hızlı bir yaklaşım için lambdas kullanın.

mydb = db("MyDb") 
:

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

Sonra sadece tarafından veritabanına erişebilir

İlgili konular