2012-02-03 12 views
5

यह प्रश्न संभवतः नोबिश है।एकाधिक डेटाबेस के लिए एक MySQLdb कनेक्शन ऑब्जेक्ट सेट अप

इसके बजाय MySQLdb कनेक्शन वस्तु हार्डकोड की

: जैसे,

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

मैं इसे कैसे सेट अप करते हैं तो मैं एक सूची या कुछ अन्य चर से 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') कोशिश कर सकते हैं। यह मानता है dbMySQLdb.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

मैं अधिकतर त्वरित दृष्टिकोण के लिए लैम्बडा का उपयोग करता हूं (कोड लिखने की भावना में तेज़ी से, यह अधिक पायथनिक लगता है)।

mydb = db("MyDb") 
:

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

तो फिर तुम बस द्वारा डेटाबेस का उपयोग कर सकते हैं

संबंधित मुद्दे