2012-06-29 4 views
0

요즘 저는 BAE에서 프로그래밍하는 방법을 연구하고 있습니다. BAE는 GAE와 같은 클라우드 플랫폼입니다. 그것은 파이썬 2.7과 MySQL을 지원합니다. 그러나 문제가 있습니다. BAE는 요청에 DATABASE 정보를 제공합니다.런타임시 Django DATABASES 설정을 어떻게 구성 할 수 있습니까?

port = request.META['HTTP_BAE_ENV_ADDR_SQL_PORT'] 

하지만 어떻게 내가 런타임에 DATABASES 설정을 구성 할 수 있습니다 :이 같은 설정을받을 수 있나요?

from django.conf import settings 

class bae_database(object): 
    def process_request(self, request): 
     BAE_DB = { 
      'default': { 
       'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 
       'NAME': 'django',      # Or path to database file if using sqlite3. 
       'USER': 'root',      # Not used with sqlite3. 
       'PASSWORD': '',     # Not used with sqlite3. 
       'HOST': 'localhost',      # Set to empty string for localhost. Not used with sqlite3. 
       'PORT': '3306',      # Set to empty string for default. Not used with sqlite3. 
      }, 
     } 
     settings.DATABASES = BAE_DB 

그런 settings.py 파일에 내가 MIDDLEWARE_CLASSES이 미들웨어를 추가하고 DATABASES = {}을 설정

나는 이런 식으로이 문제에 대한 미들웨어를 작성했습니다. 장고 오류 페이지의 설정 부분에서 내가 얻을 수 있기 때문에,

You haven't set the database ENGINE setting yet. 

미들웨어 작동 사실 : 는 결과적으로 나는이 오류 메시지가

DATABASES 
{'default': {'ENGINE': 'django.db.backends.mysql', 'HOST': 'localhost', 'NAME': 'django', 'PASSWORD': '********************', 'PORT': '3306', 'USER': 'root'}} 

나는 이유를 알고하지 않습니다, I DATABASES 속성을 변경했지만 쓸모가 없습니다. 도와주세요.

답변

0

DATABASES == {}settings.py입니까? - 그렇다면 settings.py에 무엇인가 설정하십시오 (예 : 현재 귀하의 middware에 표시되는 테스트 값.

+0

django는 DATABASE = {}로 설정 한 경우에만 runserver 이후 데이터베이스를 연결합니다. 테스트 값은 내 computer.if에 대한 작업 - 잘 구성 값을 테스트하기 위해 데이터베이스를 설정, 그건 문제가되지 않습니다.하지만 BAE에 난 그냥 요청에서 구성을 얻을 수 있습니다. – mata

+0

정적 설정을 설정하는 것은 의미가 없습니다. – mata

+0

네,하지만 제가 말하는 것은'settings.py'에서'DATABASE'를 비어 있지 않은 유효한 값으로 설정해야한다는 것입니다. 미들웨어에서 변경할 수 있지만 다른 Django를 시작할 때'DATABASES'에 * something *이 있어야 실행이 거부됩니다. – scytale

관련 문제