2012-02-03 4 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')을 사용해 동일한 연결 내에서 다른 데이터베이스로 전환 할 수 있습니다. 여기서는 MySQLdb.connect() 호출에서 연결 개체 인 db을 가정합니다. 즉, 매번 새로운 연결을 구축 할 필요가 없습니다.

데이터베이스 연결을 만드는 데 많은 비용이 듭니다. 그러므로 데이터베이스 연결을 만들지 않으려면 버려두십시오.

2

당신은 설치 사전이 연결을 저장할 수는

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

그런 다음 당신이 사전을 사용하여 DB를 액세스하거나 또한 연결을 가리 키도록 지역을 할당 할 수있는 객체.

0

저는 주로 람다를 사용하여 코드를 작성하는 속도가 빠르며 더 평온한 느낌을줍니다.

mydb = db("MyDb") 
:

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

그런 다음 당신은 단순히하여 데이터베이스에 액세스 할 수 있습니다

관련 문제