2016-08-09 3 views
0

既存のデータベースのORMを手動で作成してデータベースリフレクションを使用する賛否両論は何ですか?既存のデータベースのORMを手動で作成する長所と短所はありますか?

SQLAlchemyを使用して既存のデータベースにアクセスするコードをいくつか書いています。私はsqlalchemy.ext.automapを使用して、スキーマを自動的に反映し、マッピングを作成できることを知っています。

しかし、マッピングクラスを手動で作成することに大きなメリットがあるのか​​、それともautomapにマジックを与えるのかが疑問です。


重要な利点がある場合には、DjangoのinspectdbのようなPythonのマッピングクラスを自動生成SQLAlchemyのことができますか?そうすれば、すべての宣言ベースマッピングをより速く作成することができます。なぜなら、最初から書き込むのではなく、検証と微調整だけで済むからです。

編集: @iuridinizは以下のように、Djangoのinspectdbを模倣するいくつかのソリューションがあります。 Is there a Django's inspectdb equivalent for SQLAlchemy?を参照してください。そのスレッドの答えはPython3と互換性がないので、実際に維持されているものを探しているのならsqlacodegenまたはflask-sqlacodegenを調べてください。

+1

[SQLAlchemyのDjangoのinspectdbに相当するものはありますか?](http://stackoverflow.com/questions/1794564/is-there-a-djangos-inspectdb-equivalent-for-sqlalchemy) – iuridiniz

+0

ありがとうそれ!それで、質問の後半が面倒です。前半の考えは? – dthor

答えて

0

多くのテーブルは、CREATE TABLE suppliers AS (SELECT * FROM companies WHERE 1 = 2);(貧弱な人のテーブルコピー)で作成されていますが、プライマリキーはありません。既存のテーブルにプライマリキーがない場合は、例外を常にキャッチして、Columnオブジェクトをマッパーにフィードする必要があります。便利なカラムオブジェクトがある場合は、すでに自分のORMレイヤーを作成する途中です。 ORMを完了したばかりの場合、テーブルに主キーが設定されているかどうかを心配する必要はありません。

関連する問題