2016-10-20 19 views
1

私の場合、Djangoを既存のデータベースであるMicrosoft SQLで使用することは可能ですか?それは本当に巨大で複雑であり、さらにDjangoによって変更されることはありませんか?既存の複雑なデータベースでDjangoを使用する

私は既にthisを読んでいますが、それは私の問題を解決してくれないようです。 manage.py migrateはデータベースにいくつかのテーブルを追加しますが、これは発生してはいけません。

それはまだすべてのDBに移行を使用する必要があるので、私はまた、動作しない可能性があります、これを見つけた: https://docs.djangoproject.com/en/1.10/topics/db/multi-db/

私のユーザーストーリーは次のとおりです。

  • 私は顧客データを表示したいです私のブラウザでは、既存のデータベースから、私は(SQL挿入)訪問レポートを書きたい
  • (SQLのSELECT)

Bそれを超えて、データベースは変更してはいけません。

これはDjangoで可能ですか? Djangoは仕事のための正しいツールですか? Django固有のデータベースと、それが選択/挿入されるだけの別のデータベースを持つことは可能ですか?

答えて

2

djangoで別のデータベースを使用してメタデータを保持することができます。データベースのルータは、どのデータをどのデータベースに保存するようにDjangoに伝えるに役立つ[docs]

例:。

Settings.py

DATABASE_ROUTERS = ['path.to.YourRouter'] 

router.py

class YourRouter(object): 
    def db_for_read(self, model, **hints): 
     if model.__class__.__name__ in ['A', 'B']: 
      return 'secondDB' 
     return 'default' 

    def db_for_write(self, model, **hints): 
     if model.__class__.__name__ in ['A', 'B']: 
      return 'secondDB' 
     return 'default'   
    def allow_relation(self, obj1, obj2, **hints): 
     return True 

訪問レポートテーブルに書き込むには、inspectdb管理コマンドは、既存のデータベースに基づいて自動的にモデルを生成することによって、大幅に役立ちます。 [docs]

+0

恐ろしい、ありがとう=) – Harper

0

Djangoは、管理者権限、セッション、コンテンツタイプ、モデル移行などのさまざまな情報を記録するためのテーブルを追加します。

Djangoはあなたのための適切なツールではありませんよりも、あなたは本当に、あなたのデータベースへの変更を希望しない場合。

+0

ありがとう、ありがとう。 DBは、異なる会社/ソフトウェアによって維持管理されるソフトウェアの一部であり、ブラウザ内のデータを見て特定の挿入物を作成するだけなので、変更する必要はありません。 – Harper

+2

複数のDBでDjangoを使うことができます。あなたはDjangoにそれを1つに設定して、他のものに接続し、書き込み許可を制限することができます。 – IanAuld

関連する問題