python - 无法将 Django 连接到 SQL 服务器
问题描述
这是我在这里的第一个帖子,如果有问题请见谅。
我正在 Django 中创建一个 CRM sorta 应用程序,并尝试使用 pyodbc 连接到 MSSQL 数据库。我设法连接,Django 甚至创建了一些表 dbo.django_migrations 和 dbo.django_content_type (这是空白的)。但是当我运行时,我得到了很多错误:
Traceback (most recent call last):
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\views\generic\base.py", line 70, in view
return self.dispatch(request, *args, **kwargs)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\utils\decorators.py", line 43, in _wrapper
return bound_method(*args, **kwargs)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\views\decorators\debug.py", line 89, in sensitive_post_parameters_wrapper
return view(request, *args, **kwargs)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\allauth\account\views.py", line 146, in dispatch
return super(LoginView, self).dispatch(request, *args, **kwargs)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\allauth\account\views.py", line 69, in dispatch
if request.user.is_authenticated and app_settings.AUTHENTICATED_LOGIN_REDIRECTS:
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\utils\functional.py", line 246, in inner
self._setup()
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\utils\functional.py", line 382, in _setup
self._wrapped = self._setupfunc()
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\contrib\auth\middleware.py", line 23, in <lambda>
request.user = SimpleLazyObject(lambda: get_user(request))
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\contrib\auth\middleware.py", line 11, in get_user
request._cached_user = auth.get_user(request)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\contrib\auth\__init__.py", line 177, in get_user
user_id = _get_user_session_key(request)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\contrib\auth\__init__.py", line 60, in _get_user_session_key
return get_user_model()._meta.pk.to_python(request.session[SESSION_KEY])
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\contrib\sessions\backends\base.py", line 65, in __getitem__
return self._session[key]
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\contrib\sessions\backends\base.py", line 238, in _get_session
self._session_cache = self.load()
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\contrib\sessions\backends\db.py", line 43, in load
s = self._get_session_from_db()
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\contrib\sessions\backends\db.py", line 32, in _get_session_from_db
return self.model.objects.get(
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\models\query.py", line 431, in get
num = len(clone)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\models\query.py", line 262, in __len__
self._fetch_all()
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\models\query.py", line 1324, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\models\query.py", line 51, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\models\sql\compiler.py", line 1169, in execute_sql
cursor.execute(sql, params)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\backends\utils.py", line 98, in execute
return super().execute(sql, params)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\backends\utils.py", line 66, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\backends\utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "c:\Users\thardt\Documents\Web-Development\employeeweb\venv\lib\site-packages\sql_server\pyodbc\base.py", line 553, in execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'django_session'. (208) (SQLExecDirectW); [42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement(s) could not be prepared. (8180)")
[13/Apr/2021 16:36:31] "GET / HTTP/1.1" 500 203174
我真的不知道我做错了什么。我已经阅读了无数有类似问题的线程,但似乎没有任何帮助。
我的设置.py:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'Employee_Database_Test',
'USER': 'xxxx',
'PASSWORD': 'xxxx',
'HOST': 'ss-sql-02',
'PORT': '1433',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
},
},
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
}
解决方案
所以,经过一番摸索......我已经将 Django 从 3.2 降级到 3.0,将 Allauth 降级到 0.42.0。运行所有迁移,神奇地一切正常。我不确定问题的原因是什么,老实说,可能只是 Django 3.2 或 Allauth 和 pyobdc 之间的一些不兼容?
推荐阅读
- sql - 如何计算组数?
- git - Git忘记了我正在合并的事实
- python - 张量流中的简单神经网络->形状问题
- haskell - 如果我们用它写下 mfix,liftM 对 Functor 实例是否过于严格?
- java - 使用占位符将系统环境变量注入 Spring Annotation
- amazon-web-services - Kubectl tls 补丁返回“未修补”
- python - 在 Kmean 之后,新的预测标签总是随着 PCA 变化
- java - 在 H2 中添加新数据的可能性有多大?
- jasper-reports - Jaspersoft Studio 中的高级图表格式
- python - 在更新对象时从对象中读取