sql >> データベース >  >> NoSQL >> MongoDB

複数のデータベースをサポートするPythonアプリケーションの書き方

    Djangoは複数のデータベース をサポートしています したがって、必要なのは、それらの間の切り替えを処理するためのコードだけです。

    ドキュメントを読んだら、Djangoで独自のカスタム「ルーター」クラスを提供して、特定のクエリに使用するデータベースを決定できることがわかります。
    https://docs.djangoproject.com/en/1.6/topics/db/multi-db/# using-routers

    「フロントエンド」でどのデータベースを選択したいかを言うので、おそらくあなたのサイトの各ユーザーは異なるデータベースバックエンドを選択することができます。 dbルーターは現在のhttpリクエストとユーザーについて何も知らないため、これには問題があります。

    この「ThreadLocal」ミドルウェアを使用して現在のリクエストオブジェクトを保存し、カスタムルーターからアクセスできるようにすることをお勧めします:
    https://github.com/jedie/django-tools/blob/master/django_tools/middlewares/ThreadLocal.py

    ユーザーが選択したバックエンドをセッションに保存するとします> request.session['db_name']として -ルーターは次のようになります:

    from django_tools.middlewares import ThreadLocal
    
    class RequestRouter(object):
        def db_for_read(self, model, **hints):
            request = ThreadLocal.get_current_request()
            return request.session.get('db_name', 'default')
    
        def db_for_write(self, model, **hints):
            request = ThreadLocal.get_current_request()
            return request.session.get('db_name', 'default')
    
        def allow_relation(self, obj1, obj2, **hints):
            return True
    
        def allow_syncdb(self, db, model):
            return True
    



    1. フラスコを起動する前に(起動していない場合は起動して)、redisが実行されているかどうかを確認するにはどうすればよいですか?

    2. MongoDB結果クエリをフラット化することは可能ですか?

    3. パスワードの検証/Mongooseスキーマによるパスワードの確認

    4. コレクションから選択フィールドにデータを入力し、meteorで選択した値に従ってフィルタリングします