2

最近はBAEでプログラミングする方法を勉強しています。BAE は GAE のようなクラウド プラットフォームです。Python 2.7 と MySQL をサポートしています。しかし、問題があります。BAE はDATABASE要求で情報を提供します。これらの設定は次のように取得できます。

port = request.META['HTTP_BAE_ENV_ADDR_SQL_PORT']

しかし、実行時に設定を構成するにはどうすればよいDATABASESですか?

次のように、この問題のミドルウェアを作成しようとしました。

from  django.conf import settings

class bae_database(object):
    def process_request(self, request):
        BAE_DB = {
            'default': {
                'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
                'NAME': 'django',                      # Or path to database file if using sqlite3.
                'USER': 'root',                      # Not used with sqlite3.
                'PASSWORD': '',                  # Not used with sqlite3.
                'HOST': 'localhost',                      # Set to empty string for localhost. Not used with sqlite3.
                'PORT': '3306',                      # Set to empty string for default. Not used with sqlite3.
            },
        } 
        settings.DATABASES = BAE_DB

次に、settings.pyファイルにこのミドルウェアを追加しMIDDLEWARE_CLASSESて設定しDATABASES = {}ます。その結果、次のエラー メッセージが表示されます。

You haven't set the database ENGINE setting yet.

実際、ミドルウェアは動作します.Djangoエラーページの設定部分に次のように表示されるためです:

DATABASES   
{'default': {'ENGINE': 'django.db.backends.mysql', 'HOST': 'localhost', 'NAME': 'django', 'PASSWORD': '********************', 'PORT': '3306', 'USER': 'root'}}

理由はわかりませんが、DATABASES属性を変更しましたが、だめです。私を助けてください。

4

1 に答える 1

0

ですか?DATABASES == {}_ settings.py- その場合settings.pyは、現在ミッドウェアに表示されているテスト値など、何かに設定してみてください。

于 2012-06-29T08:30:34.007 に答える