3

SQLデータベースモデルを備えたPythonCLIプログラムがあり、MVCフレームワーク(Djangoなど)を備えたフロントエンドを追加したいと考えています。モデルをすでに定義している場合、プログラムをフレームワークとインターフェースするための最良の方法は何ですか?

私はどちらかをしますか:

  1. Djangoと私のプログラムの両方で共有されるようにモデルを書き直します
  2. Djangoと私のプログラムの間のインターフェースとなるレイヤーを作成します
  3. マイプログラムからモデルを削除し、Djangoに処理させます

選択肢1:共有モデル

          My Program
        /      |    \
  Binaries    Model  Classes
               |
             Django
             /    \
         View     Controller

選択肢2:ブリッジングライブラリを作成する

          My Program
        /      |    \
  Binaries    Model  Classes
               |
            My-Bridge
               |
             Django
             / |    \
         View  Model Controller

選択肢3:ほとんどの作業にDjangoを使用し、プログラムからモデルを削除する

  Classes
         \
          My Program
        /      | 
  Binaries     |
               |
            My-Bridge
               |
             Django
             /   |    \
         View   Model   Controller

DjangoのORMとSQLAlchemyを使用して共有モデルを作成する方法がわからないため、選択肢1(共有モデルの作成)を避けています。

選択肢2(ブリッジの作成)については、これがDjangoを完全に使用しているかどうかわからないため、よくわかりません。ドキュメントから、MVCフレームワークを考えると、Djangoがモデルを処理する必要があると考えられているようです。

My-ProgramでSQLAlchemyモデルを使用するすべてのSQLAlchemyORMロジックを書き直す必要があるため、選択肢#3(プログラムからのモデルの削除)も避けています。

皆さんはどう思いますか?プログラムのCLIバージョンをすでに作成している場合、どちらを選択するのが最適ですか?

4

4 に答える 4

3

私はDjangoが大好きですが、このシナリオを考えると、SQLAlchemyをサポートしているPylonsも見ることができます。または、SQLAlchemyをビューにインポートすることで、SQLAlchemyを引き続き使用できます。そのための例については、この投稿を参照してください。

于 2011-03-26T15:11:18.280 に答える
1

まず、バックエンドをバイパスするデータを変更するフロントエンドが適切な設計とは思えないことを観察することから始めましょう。そうは言っても、それができないという技術的な理由は見当たらない。データの整合性を維持するのはデータベースであることを覚えておく必要があります。そのため、同じデータベースで異なるORMまたは異なるモデルの1つのORMを使用できる必要があります。

使用するモデルORMは、バックエンドとフロントエンドの統合をどのように実行するかを明確に示します。

私はそれが選択を決定するとは言いません。バックエンドとフロントエンドの両方に同じORMを使用する方が簡単ですが、必須ではありません。

于 2011-03-27T11:56:24.933 に答える
0

djangoのAPIに準拠するようにモデルを書き直すことは、作業量が最も少なく、問題を解決するための最も「正しい」方法のように思えます。「高度な」データベースアクセスを行っていない限り、DjangosORMは必要な処理をクリーンに処理できるはずです。フルスタックを使用すると、後でモデルをラップするフォームや、モデル構造を期待するフレームワークの他のすべてのビットが必要になったときにも利益が得られます。

于 2011-03-26T15:18:11.897 に答える
0

「マイプログラム」のロジックの多くをインポート可能なモジュールに移行しようと思います。次に、これをdjangoにインポートして、データベースの設定を共有します。djangoインスタンスを実行し、うなり声を上げて、「マイプログラム」にリモート呼び出しを行わせることもできます。確かに、それはおそらく最も多くの作業を必要とします。

于 2011-01-02T08:59:39.683 に答える