2012-06-04 21 views
0

我試圖調用一個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. 
+0

請出示您完成配置settings.DATABASES –

+0

。配置好像對我來說......? – user1435114

回答

1

好像你沒有指定任何東西在你的setting.py文件的DATABASES dictionary.Specify下面連接到DATABSE成功(按文檔),

1)ENGINE - 'django.db.backends.postgresql_psycopg2','django.db.backends.mysql','django.db.backends.sqlite3'或'django.db.backends.oracle'。其他後端也可用。

2)名稱 - 數據庫的名稱。如果您使用SQLite,數據庫將成爲您計算機上的文件;在這種情況下,NAME應該是該文件的完整絕對路徑,包括文件名。如果該文件不存在,則會在首次同步數據庫時自動創建該文件(請參見下文)。

3)USER - 您的數據庫用戶名(不用於SQLite)。

4)PASSWORD - 您的數據庫密碼(不適用於SQLite)。

5)HOST - 數據庫所在的主機。如果您的數據庫服務器位於同一臺物理機器上(不用於SQLite),請將其保留爲空字符串。

(OR)點擊HERE

+0

我將我的配置添加到原始問題中。對我來說似乎很好......? python manage.py syncdb工作正常。 – user1435114