2011-10-25 2 views
0

다양한 나이의 서버 중 다양한 버전의 Python을 실행하고 있습니다. 이 서버에서는 MySQL 상호 작용이 필요한 스크립트를 실행하고 있습니다. Python MySQLdb 모듈을 사용하는 래퍼 클래스를 작성했지만 이전 서버에서는이 모듈이 존재하지 않습니다. 이 문제를 해결하기 위해, 서버에 MySQL 모듈이 있는지 찾아보고 싶습니다. 그렇다면 일반적으로 내 래퍼 클래스를 사용하고 그렇지 않으면 bash를 사용하여 작성한 백업 MySQL 클래스로 전환하십시오.Python 클래스 선택

내 질문은 :이 두 클래스 사이를 전환하는 우아한 방법이 있습니까?

내가 생각할 수있는 유일한 방법은 MySQLdb 모듈이로드되었는지 여부에 따라 다른 기능을 전환하는 MySQL 래퍼 클래스 내에 "if"문을 여러 개 가지는 것입니다. 중요한 점은 스크립트가 두 클래스 중 어느 클래스를 사용하는지 알지 못하기 때문에 스크립트 자체의 코드는 관계없이 동일해야합니다. 나는 파이썬에 익숙하지 않기 때문에 사전에 도움을 주셔서 감사합니다. 두 모듈이 동일한 API가있는 경우

+0

"이 서버에서 ...."스크립트는 파이썬으로 작성 되었습니까? 그렇다면 파이썬에서 상속을 사용할 수 있습니다. 이렇게하면 혼란이 줄어들고 if-else를 간접 기반 호출로 변경할 수 있습니다. 고전적인 디자인 패턴 원리. –

답변

2

는, 일반적인 방법은 몇 가지 일반적인 이름 중 하나를 가져 오는 것입니다 :

try: 
    import MySQLdb as mysql 
except ImportError: 
    import mymodule as mysql 

다음은 평소와 같이 그 이름을 사용합니다.

+0

고마워, 나는 너를 "수입"할 수 있다는 것을 몰랐다 :-) – Jak