1

Я хочу переключить db-серверы с django_pyodbc на sqlite, чтобы убедиться, что моя пользовательская модель работает до того, как я начну возиться с моим db. Поэтому я прокомментировал параметр DATABASES и установил новый, который использует sqlite. Я делал это раньше (и в этом проекте) без проблем, но теперь я понятия не имею, что происходит.Django делает что-то странное с настройками DATABASES

syncdb отвечает, как будто он смотрит на db, который уже синхронизирован, то есть он ничего не делает.

shell, settings.DATABASES возвращает настройки для моего первоначального db (потрясающе, он все еще думает, что я использую бэкэнд sqlserver_ado, который я отключил для django_pyodbc пару недель назад), и я могу получить доступ к моделям, которые 't имеют какое-либо отношение к моей модели пользователя, но те, которые возвращают ошибку (потому что я изменил некоторые имена полей пользователя). В traceback я вижу, что он все еще смотрит на MSSQL db.

runserver работает, но когда я иду на страницу, я получаю DatabaseError - нет такой таблицы: django_session. Место исключение в ... \ Джанго \ дб \ движки \ sqlite3 \ ...

Вот полный отслеживающий:

Traceback: 
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 
    187.     response = middleware_method(request, response) 
File "C:\Python27\lib\site-packages\django\contrib\sessions\middleware.py" in process_response 
    28.     if request.session.get_expire_at_browser_close(): 
File "C:\Python27\lib\site-packages\django\contrib\sessions\backends\base.py" in get_expire_at_browser_close 
    253.   if self.get('_session_expiry') is None: 
File "C:\Python27\lib\site-packages\django\contrib\sessions\backends\base.py" in get 
    57.   return self._session.get(key, default) 
File "C:\Python27\lib\site-packages\django\contrib\sessions\backends\base.py" in _get_session 
    168.     self._session_cache = self.load() 
File "C:\Python27\lib\site-packages\django\contrib\sessions\backends\db.py" in load 
    18.     expire_date__gt=timezone.now() 
File "C:\Python27\lib\site-packages\django\db\models\manager.py" in get 
    143.   return self.get_query_set().get(*args, **kwargs) 
File "C:\Python27\lib\site-packages\django\db\models\query.py" in get 
    398.   num = len(clone) 
File "C:\Python27\lib\site-packages\django\db\models\query.py" in __len__ 
    106.     self._result_cache = list(self.iterator()) 
File "C:\Python27\lib\site-packages\django\db\models\query.py" in iterator 
    317.   for row in compiler.results_iter(): 
File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py" in results_iter 
    775.   for rows in self.execute_sql(MULTI): 
File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql 
    840.   cursor.execute(sql, params) 
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute 
    41.    return self.cursor.execute(sql, params) 
File "C:\Python27\lib\site-packages\django\db\backends\sqlite3\base.py" in execute 
    366.    six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2]) 
File "C:\Python27\lib\site-packages\django\db\backends\sqlite3\base.py" in execute 
    362.    return Database.Cursor.execute(self, query, params) 

И да; I есть попытался включить и выключить компьютер. Есть идеи? Спасибо.

== EDIT ==

Вот мои настройки базы данных:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': PROJECT_ROOT.child('temp_db').child('sqlite.db'), 
     'USER': '', 
     'PASSWORD': '', 
     'HOST': '', 
     'PORT': '', 
    } 
} 

# DATABASES = { 
#  'default': { 
#   'ENGINE': 'django.db.backends.django_pyodbc', 
#   'NAME': my_project, 
#   'USER': '', 
#   'PASSWORD': '', 
#   'HOST': my_host, 
#   'PORT': '', 
#   'OPTIONS': { 
#    'driver': 'SQL Server', 
#    'MARS_Connection': True, 
#   } 
#  } 
# } 

== EDIT2 ==

Я посмотрел в мои настройки папки, чтобы найти __init__.py, base.py, dev.py и их связанных файлов .pyc. Кроме того, есть settings.pyc файл без соответствующего .py файла (я предполагаю, что это остаток от прежде чем я нарубил settings.py на отдельные куски, я попытался удалить его и снова делать syncdb и получил это:.

C:\...\my_project>manage.py syncdb --settings=my_project.settings.devettings=web_ems. 
Traceback (most recent call last): 
    File "C:\...\my_project\manage.py", line 15, in <module> 
    if settings.DEBUG: 
    File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 53, in __getattr__ 
    self._setup(name) 
    File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 48, in _setup 
    self._wrapped = Settings(settings_module) 
    File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 134, in __init__ 
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s"% (self.SETTINGS_MODULE, e)) 

ImportError: Could not import settings 'my_project.settings.settings' (Is it on sys 
.path?): No module named settings 
+0

Покажите нам свои 'settings.py'. – sachitad

+0

Любые конкретные биты? – moarCoffee

+0

'DATABASES' будет делать. – sachitad

ответ

1

вы не используете модуль правильные настройки, поэтому изменения не будут иметь никакого эффекта

возможные причины могут быть много, однако основные возможности два:.

  1. вы используете модуль от wro ng (т.е. ваш PYTHONPATH ошибочен);
  2. Ваш DJANGO_SETTINGS_MODULE неправ.

Дополнительный совет: если вы хотите знать, какие настройки модуля вы используете, откройте оболочку и введите:

>>> from django.conf import settings 
>>> settings.SETTINGS_MODULE 
'my_project.settings' 

Затем, если вы хотите узнать, используете ли вы my_project.settings из правый путь, использование:

>>> from my_project import settings 
>>> settings 
<module 'my_project.settings' from '...'>