私は長年にわたってDjangoをかなり楽しんできました。今私は、私たちのデータベースから情報にアクセスするための共有内部ライブラリを構築している会社のために働いています。現在、物事はひどく荒々しい - 多くのインラインSQLコード。いくつかの同僚はコードにアクセスする作業をしていましたが、これは私がDjangoが慣れているようなものです。 Djangoは基本的にモジュラー型であると聞いていたので、ORMシステムを単独で使うこともできました。私はSqlAlchemyのような他のパッケージがあることを知っていますが、Djangoは平均的なケースではもっと簡単に処理すると聞いています。私もDjangoを知っていて、SQLAlchemyを知らない。PythonライブラリでDjango ORMを使用するとトラブルが発生しますか?
したがって、次のような概念の証明ができます。ここでは、ディレクトリ構造は次のとおりです。
+-- example.py
+-- transfer
| +-- __init__.py
| +-- models.py
ここmodels.py
import django.conf
import django.db.models
django.conf.settings.configure(
DATABASES = ..., # database info
INSTALLED_APPS = ("transfer",),
SECRET_KEY = 'not telling',
)
django.setup()
class TransferItem(django.db.models.Model)
# model info here
example.py
from transfer.models import TransferItem
items = TransferItem.objects.all()
print items
があるこれは、限り、それが行くように、正常に動作するようです。しかし、私はライブラリのコンテキストでブートストラップコードが心配です。具体的には:
- これはアプリとして考えるのは危険ですか?この場合、「転送」はルートモジュールですが、ライブラリのコンテキストでは、これは深く埋めることができます。たとえば、「mycompany.data.protocols.transfer」と入力します。理論的には、これらのデータモデルをコードベース全体で定義することができます。この「アプリリスト」はどのようにスケールできますか?
- セットアップへの呼び出しは本当に私を心配します。 djangoのドキュメントでは、セットアップを一度だけ呼び出すとしか言いません。それでも、ライブラリの本質は、どのようなPythonアプリケーションでも、どんなタイプのデータモデルでもインポートできるということです。どのような種類のモデルを使用してもデータが返され、そのときだけ、Pythonアプリケーションがインポートする必要があると判断するでしょうか?別のタイプのモデル(おそらく別の「アプリ」に)?
だから、基本的な質問はこれです:
はPythonライブラリでDjangoのORMを使用するには良い方法はありますか?
EDIT:これはない CLIツールの質問の重複しています。私はWebサーバーの外でdjangoを実行する方法を知っています。私はこれを示すコードサンプルを与えた。私は、モデルファイルをクライアントコードでインポートして任意の順序で使用することができる "アプリケーション"自体がない場所でdjangoを実行する方法があるかどうかを知りたいと思います。
依存する、あなたのpythonライブラリは何ですか? –
私はVFX社の仕事をしています。さまざまな社内データベース、人事関連、ショー関連などを扱っています。さまざまなpythonアプリケーションは、これらから読んだり更新したりする必要があります。私たちは、共有されたPythonライブラリに、このコードを取り込むのではなく、この通信をカプセル化するための素敵なPythonオブジェクトを用意しておきます。 DjangoはORMで私たちのほとんどを得ているようです。セットアップの呼び出しやINSTALLED_APPSの呼び出しでない場合は、私たちが望むものを正確に言うでしょう。 – thegiffman
[CLIツールにdjangoを使用する]の可能な複製(http://stackoverflow.com/questions/32088702/using-django-for-cli-tool) – e4c5