8

同じデータベースにアクセスする2つのアプリがあります。1つ目は、クライアントがTCP経由で接続し、SQLAlchemyを使用してデータベースに書き込みます。2つ目は、Djangoを使用するより一般的なWebアプリです。どちらにも読み取り/書き込み要件があります。

データベースアクセス層を統合したいのですが、SQLAlchemyまたはDjangoだけを選択するのは魅力的ではありません。理由は次のとおりです。

  1. django auth、permissions、そしておそらくDjango ORMを必要とするサードパーティのプラグインを使用したいと思います(間違っている場合は修正してください)。
  2. 最初のアプリの場合、SQLAlchemyの使用(これまでのところ)は、Djangoアプリの外部でDjangoORMを使用するよりもはるかに簡単です。これはTCP/ IPサーバーアプリであり、HTTP/Webアプリではありません。

同じデータベースでこれら2つのORMを混在させることに問題はありますか?

どのシステム(Django、SQLA)でモデルを作成する必要がありますか、それともDjango inspectdbなどのある種のイントロスペクションを使用する必要がありますか?

4

1 に答える 1

7

manage.pyまず、Django ORMを、WSGIハンドラーやその他のHTTP関連のものの外で使用することはそれほど難しくありません。任意のPythonスクリプトを使用できますが、初期化が必要です()。

第二に、SQLAは非常に強力なツールであり、Django ORMで達成するのが非常に難しいこと(本物のポリモーフィズムやポリモーフィッククエリなど)を実行できます。選択する必要がある場合は、個人的にDjango ORMをプラットフォームとして使用してモデルを作成し、SQLAで手動でマッピングすることを選択します。これは、はるかに柔軟性があり、うまくいけば採用できるためです。逆の場合は機能しない可能性があります。

最後に、両側でDjango ORMを使用でき、プラグインのためにDjango ORM使用する必要があるため、SQLAを放棄することをお勧めします。これは強力なツールですが、かなり複雑でもあります。1つのデータベースで2つの異なるORMを操作すると、将来的に予期しない問題が発生し、アプリの複雑さが増す可能性があるため、メンテナンスが難しくなります。

于 2012-06-01T22:52:12.880 に答える