django - 获取 'settings.DATABASES 配置不正确。请提供名称值'错误
问题描述
我正在使用 Django 连接到本地数据库。此前,该数据库托管在 Azure 上。我之前在 Django 设置中使用的连接字符串如下 -
Azure的sql数据库
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'DatabaseName', #notrealname
'USER': 'username',
'PASSWORD': 'password',
'HOST': 'sql-django-uat.database.windows.net', #notreal
'PORT': '1433',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
'MARS_Connection': 'True',
}
数据库迁移后,此字符串不起作用。我不断收到“登录超时已过期”。
但是用“DATABASE”替换“NAME”是可行的。下面给出的例子 -
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'DATABASE': 'DatabaseName', #notrealname
'USER': 'username',
'PASSWORD': 'password',
'HOST': 'on-prem.local',
'PORT': '1433',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
'MARS_Connection': 'True',
}
我的 webapp 进入登录页面。但是在我登录后,我得到了错误-'ImproperlyConfigured at /login/
settings.DATABASES 配置不正确。请提供 NAME 值。
有人可以告诉我如何解决这个问题吗?我应该提到将“NAME”字段留空也会产生同样的错误。提前非常感谢。
解决方案
From the Azure SQL database
,settings.py 应该是:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'mydb',
'USER': 'user@myserver',
'PASSWORD': 'password',
'HOST': 'myserver.database.windows.net',
'PORT': '',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}
# set this to False if you want to turn off pyodbc's connection pooling
DATABASE_CONNECTION_POOLING = False
用户:字符串。采用“user”(本地)或“user@server”(Azure SQL 数据库)格式的数据库用户名。如果未给出,则将使用 MS Integrated Security。
参考:django-pyodbc-azure 2.1.0.0
对于本地 SQL Server,数据库配置:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'HOST': '(LocalDB)\ProjectLocalDB',
'PORT': '',
'NAME': 'my_db',
'USER': 'my_user',
'PASSWORD': 'my_password',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
},
},
}
这里有两个教程,我想你可以向他们学习以检查你是否遗漏了什么:
- 如何将 Django 与 SQL Server LocalDB 一起使用:这篇文章已经在 Microsoft SQL Server 2017、Django 1.11.x 和 2.x 上进行了测试。pyodbc 和 django-pyodbc-azure 包将用于将 Django 连接到 SQL Server。django-pyodbc-azure 的版本必须与您的 Django 版本匹配。
- Django 和 MS SQL Server:新的 python 模块/库
django-pyodbc-azure
支持 Django 2.0 和 Django 1.11 等更低版本。
希望这可以帮助。
推荐阅读
- swift - SwiftUI NavigationView 删除空格
- javascript - 如何使用 await 而不是 .then 来获取我的 json 值
- django - Angular 9 front/corsheaders django 3 back - 将 CORS 标头附加到请求中
- python - Python 中的异步多处理与池 apply_async
- xml - 收到错误“System.Xml.XmlException:根级别的数据无效。第 1 行,位置 1。
- mysql - 在再次授予之前清除启动时的 MySQL 授予
- python - 如何使用 torchvision 的导入数据集访问 MNIST 数据的各个数据点并从 trainset 对象检查它们的大小、形状等
- scala - 使用 Scala Futures 按顺序执行依赖项
- macos - 如何在 Open Firmware 中取消设置环境变量?
- node.js - 在云功能上使用 puppeteer 拒绝访问网站