2017-08-17 15 views
2

djangoはdjango-pyodbc-azureでSQL Serverに接続しています。私はdjangoにまったく新しいものです。私はdjango models.pyでモデルを作成し、モデルをSQL Serverに移行することができました。すべての適切なテーブルが作成されます。Djangoを使用したSQL Serverテーブルの既存データへのアクセス

私は最終的にアプリケーションによって提供される履歴データを持っています。この履歴データを保持している既存のテーブルに同じDB内でアクセスできますか?または、djangoによって作成された新しいテーブルに履歴データをロードするだけで賢明ですか?

概念的には、既存のテーブルに対して(inspectdbまたは手動で)モデルを作成することが考えられます。しかし、これらのモデルを追加すると、テーブルがすでに存在することを認識するのではなく、移行が実行されるときにdjangoが新しいテーブルを作成します。

ベストプラクティスとは何ですか?すべての新しいテーブルを作成してから、エージェントにジョブをセットアップして履歴データを新しいテーブルにロードする方がクリーンだと思います。

答えて

1

Djangoモデルで履歴テーブルの形式と制約を正確に記述できると100%確信している場合は、makemigrationsを実行してから--fake-initialタグを実行してみてください。これは、既存のデータベースを使用して新しいアプリケーションを初期化する場合に推奨されるプロセスです。

本質的には、テーブルがどのように表示されるべきかをDjangoに伝えていますが、テーブルがすでに存在するため、テーブルを設定するように要求していません。しかし、Djangoがテーブルの正しい名前を持っていることを確認してください。customizing table namesは難しいかもしれません。

ただし、テーブルを完全に記述するモデルを設定することに疑問がある場合は、新しいテーブルを作成し、古いデータをテーブルにロードするだけです。これは、Djangoがテーブルについて必要なすべての情報を持っていることを知っているので、より洗練されたものになります。また、古いデータがクリーンでないか、重複が含まれている可能性がある場合は、受信データに新しい制約を適用することができます。

関連する問題