2011-01-19 6 views
0

私は、ピクルス、XML、YAMLなどではなく、ファイルストレージ用にsqlite3-databasesを使用する予定のPyQtを使ってデスクトップアプリケーションを作成しています。その理由は、後でアプリケーションが集中データストアに移行する可能性があるからです。 (これは、その後などなど、他のウェブベースのサービスと通信する必要がある)デスクトップアプリケーションでDjangoのORMで別のDBを選択するには?

誰もが「SQLAlchemyのとエリクサーを使う」と言う前に、私はジャンゴを選んだ理由を指摘したいと思い、すなわち理由:

  • 私はDjangoをかなりよく知っています、それはきれいで、私はORMが好きです。
  • 移行する際に、簡単にweb-uiを追加できます。
  • Adminインターフェイスを使用すると、開発中にDBのデバッグ/検査が容易になります。

とにかく、私の問題は、Djangoのsettings.configureは、2回目の呼び出しで「は既に設定さ」エラーがスローされますので、私は、異なる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のバージョンはありますか?マルチdbはバージョン1.2で追加されました –