2011-01-19 1 views
0

필자가 피클, XML, YAML 대신 파일 저장을 위해 sqlite3-databases를 사용할 계획 인 PyQt로 데스크톱 애플리케이션을 작성하고 있습니다. 그 이유는 응용 프로그램이 나중에 중앙 데이터 저장소로 마이그레이션되기 쉽기 때문입니다. 모든 사람이 장고를 선택한 이유, 내가 지적하고 싶습니다 "SQLAlchemy의과 비약을 사용"라고하기 전에데스크탑 응용 프로그램에서 장고의 ORM에서 다른 DB를 선택하는 법?

(다음 다른 웹 기반 서비스, 등 등과 통신 할 필요가있는), 즉 이유는

  • 나는 장고를 꽤 잘 알고있다, 그것은 청초하며 나는 ORM을 좋아한다.
  • 마이그레이션 할 때 웹 ui를 쉽게 추가 할 수 있습니다.
  • Admin 인터페이스를 사용하면 개발 중에 DB를 쉽게 디버그/검사 할 수 있습니다.

어쨌든, 내 문제는 장고의 settings.configure 두 번째 통화에 발생하는 '이미 구성된'오류가 발생하기 때문에 나는 다른 sqlite3를 데이터베이스을 선택할 수 없습니다 이다.

앱을 다시 시작하지 않고 아이디어가 있습니까?

(여기에 SO에 많은 장고 - 바탕 화면-ORM 질문 없음이 문제를 해결하기 위해 보이지 않는다 ...)

답변

3

http://docs.djangoproject.com/en/dev/topics/db/multi-db/가 settings.py에서 여러 개의 DB를 정의 의역.

DATABASES = { 
    'default': { 
     'NAME': 'defaultdb', 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'USER': 'postgres_user', 
     'PASSWORD': 's3krit' 
    }, 
    'other': { 
     'NAME': 'otherdb', 
     'ENGINE': 'django.db.backends.mysql', 
     'USER': 'mysql_user', 
     'PASSWORD': 'priv4te' 
    } 
} 

그런 다음 데이터베이스를 수동으로 선택할 수 있습니다.

>>> # This will run on the 'default' database. 
>>> Author.objects.all() 

>>> # So will this. 
>>> Author.objects.using('default').all() 

>>> # This will run on the 'other' database. 
>>> Author.objects.using('other').all() 
+0

그러나 사용자가 처음부터 선택하는 모든 파일은 알 수 없습니다. 우리가 따라갈 때 DATABASES 컬럼에 물건을 수정하지 않는다면. 약간 바보 같지만 작동 할 수 있습니까? – Macke

+0

위의 코멘트로 업데이트하십시오. 나는 그것을 시도했다. 작동하지 않습니다. : - | – Macke

+0

Marcus, Django의 버전은 무엇입니까? multi-db는 버전 1.2에 추가되었습니다. –

관련 문제