我試圖調用一個python函數,它可以讓一些查詢從GNU mailman中進入我的django數據庫。當在Django之外調用函數時,Django數據庫配置不當
當mailman試圖傳遞消息時,它會導入我的python腳本。它稍後在腳本中調用一個函數來修改消息對象。我得到的錯誤是:
ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation \
for more details.
這裏是我如何配置設置,在我的文件的頂部:
from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)
當我運行python manage.py執行syncdb,似乎創建數據庫的好處。這裏是我的數據庫配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'django_db', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': 'root', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
而且,我已經註釋掉我的函數的整體,使得它現在的樣子:
def f():
return
所以我不覺得這與做函數調用。
此外,我測試了python控制檯中的setup_environ行,一切都按預期工作。
此外,當我重新啓動GNU郵遞員時,我相信它必須加載它的所有腳本,這意味着它必須導入我的文件。這意味着當我重新啓動郵遞員時,這些「setup_environ」行會運行。這很好 - 我沒有錯誤。
只有當GNU郵遞員試圖傳遞一條消息時,我遇到了問題。
所以我很難過。我做運行mailman重新啓動命令爲sudo與額外的PYTHONPATH和DJANGO_SETTINGS_MODULE環境變量,但我已經手動添加到我的sys.path和os.environ dict的相關部分,它不能解決問題。此外,錯誤並不表明這是路徑問題或無法找到設置模塊。
完整的堆棧跟蹤是:
Jun 04 12:06:11 2012 (5249) Uncaught runner exception: settings.DATABASES is improperly configured. Please supply the ENGINE val\
ue. Check settings documentation for more details.
Jun 04 12:06:11 2012 (5249) Traceback (most recent call last):
File "/var/lib/mailman/Mailman/Queue/Runner.py", line 100, in _oneloop
msg, msgdata = self._switchboard.dequeue(filebase)
File "/var/lib/mailman/Mailman/Queue/Switchboard.py", line 173, in dequeue
redirect_list(msg, data)
File "/home/ubuntu/djcode/mysite/mysite/apps/mailman/redirect.py", line 32, in redirect_list
File "/home/ubuntu/djcode/mysite/mysite/apps/mailman/redirect.py", line 45, in _get_real_listname
from mysite.apps.common.models import CustomUser
File "/home/ubuntu/djcode/mysite/mysite/apps/common/custom_user_manager.py", line 54, in get
email_object = Email.objects.get(email=kwargs['email'])
File "/usr/local/lib/python2.6/dist-packages/django/db/models/manager.py", line 131, in get
return self.get_query_set().get(*args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 361, in get
num = len(clone)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 85, in __len__
self._result_cache = list(self.iterator())
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 291, in iterator
for row in compiler.results_iter():
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 763, in results_iter
for rows in self.execute_sql(MULTI):
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 808, in execute_sql
sql, params = self.as_sql()
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 71, in as_sql
out_cols = self.get_columns(with_col_aliases)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 218, in get_columns
col_aliases)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 306, in get_default_columns
r = '%s.%s' % (qn(alias), qn2(field.column))
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 49, in quote_name_unless_alias
r = self.connection.ops.quote_name(name)
File "/usr/local/lib/python2.6/dist-packages/django/db/backends/dummy/base.py", line 15, in complain
raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation \
for more details.
請出示您完成配置settings.DATABASES –
。配置好像對我來說......? – user1435114