Django 2.1 SQL 服务器 17 错误 - 不是可用的数据库后端。尝试使用 'django.db.backends.XXX'
Django 2.1 SQL Server 17 error - isn't an available database backend. Try using 'django.db.backends.XXX'
django.core.exceptions.ImproperlyConfigured: 'django-pyodbc-azure' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
'mysql', 'oracle', 'postgresql', 'sqlite3'
我尝试切换到以下数据库设置,但没有成功。
DATABASES = {
'default': {
'ENGINE': 'django-pyodbc-azure', #None of these work either: 'django_pyodbc' 'sqlserver_ado', 'sql_server.pyodbc', 'django-pyodbc-azure','pyodbc'
'HOST': 'test-server-local',
'NAME': 'db-name',
'USER': 'sql_username',
'PASSWORD': 'password',
'PORT': '1433'
# 'OPTIONS': {
# 'driver': 'ODBC Driver 17 for SQL Server'
# 'driver': 'SQL Server Native Client 11.0',
# 'provider': 'SQLOLEDB' # Have also tried 'SQLCLI11' and 'SQLOLEDB'
# 'extra_params': 'DataTypeCompatibility=80'
# }
}
}
我能够访问 SQLLite 数据库,并且能够 运行 pyodbc 导入(直接通过 Python),但我无法在 Django 中使用它。
我已经提到了以下关于堆栈溢出的问题(没有运气)。
并且他们现有的 Django/SQL 服务器版本比我设置的要旧得多。我不想从 Django v2.1 降级到更低版本,只是为了支持 SQL 服务器数据库而不检查是否有其他选项。
我验证了以下站点包并将其添加到我的 environment/system 路径变量中:
C:\Users\AppData\Local\Programs\Python\Python37-32\Lib\site-packages
- django_pyodbc
- django_pyodbc-2.0.0a1.dist-info
- django_mssql-1.8.dist-info
- django_pyodbc_azure-2.1.0.0.dist-info
运行 下面的代码确实访问了数据库并取回了数据,所以我知道这不仅仅是 Python,而且可能是 Django。
import pyodbc
server = 'test-server-local'
database = 'TEST-DB'
username = 'sql_username'
password = 'password'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT DepartmentName, DepartmentID from dbo.Departments;")
row = cursor.fetchone()
while row:
print(row.DepartmentID, row.DepartmentName)
row = cursor.fetchone()
这里有一个完整的设置,只要 django-pyodbc-azure
安装在您当前的 virtualenv 中即可:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'HOST': 'dbserver.your-domain.com',
'PORT': '1433',
'NAME': 'project',
'USER': 'project_user',
'PASSWORD': 'project_password',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'unicode_results': True,
},
},
}
完整说明在这里:https://pyphilly.org/django-and-sql-server-2018-edition/
我遇到了和 OP 完全一样的问题。我正在使用 PyCharm。
最后我得出结论,我的虚拟环境没有正常工作。我看不出问题是什么......从 python 控制台我可以导入 sql_server,所以它在路径上,但我在 pycharm 中的测试不同意,给出与上述相同的错误。
所以我创建了一个新的虚拟环境,这次是在 pycharm 中,重新安装 requirements.txt 并且成功了。
也许我在 pycharm 配置中有一些细微的错误,通过在 pycharm 中创建一个 venv 以某种方式修复了该错误。也许是一些奇怪的 Windows 事情。
django.core.exceptions.ImproperlyConfigured: 'django-pyodbc-azure' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
'mysql', 'oracle', 'postgresql', 'sqlite3'
我尝试切换到以下数据库设置,但没有成功。
DATABASES = {
'default': {
'ENGINE': 'django-pyodbc-azure', #None of these work either: 'django_pyodbc' 'sqlserver_ado', 'sql_server.pyodbc', 'django-pyodbc-azure','pyodbc'
'HOST': 'test-server-local',
'NAME': 'db-name',
'USER': 'sql_username',
'PASSWORD': 'password',
'PORT': '1433'
# 'OPTIONS': {
# 'driver': 'ODBC Driver 17 for SQL Server'
# 'driver': 'SQL Server Native Client 11.0',
# 'provider': 'SQLOLEDB' # Have also tried 'SQLCLI11' and 'SQLOLEDB'
# 'extra_params': 'DataTypeCompatibility=80'
# }
}
}
我能够访问 SQLLite 数据库,并且能够 运行 pyodbc 导入(直接通过 Python),但我无法在 Django 中使用它。
我已经提到了以下关于堆栈溢出的问题(没有运气)。
我验证了以下站点包并将其添加到我的 environment/system 路径变量中:
C:\Users\AppData\Local\Programs\Python\Python37-32\Lib\site-packages
- django_pyodbc
- django_pyodbc-2.0.0a1.dist-info
- django_mssql-1.8.dist-info
- django_pyodbc_azure-2.1.0.0.dist-info
运行 下面的代码确实访问了数据库并取回了数据,所以我知道这不仅仅是 Python,而且可能是 Django。
import pyodbc
server = 'test-server-local'
database = 'TEST-DB'
username = 'sql_username'
password = 'password'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT DepartmentName, DepartmentID from dbo.Departments;")
row = cursor.fetchone()
while row:
print(row.DepartmentID, row.DepartmentName)
row = cursor.fetchone()
这里有一个完整的设置,只要 django-pyodbc-azure
安装在您当前的 virtualenv 中即可:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'HOST': 'dbserver.your-domain.com',
'PORT': '1433',
'NAME': 'project',
'USER': 'project_user',
'PASSWORD': 'project_password',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'unicode_results': True,
},
},
}
完整说明在这里:https://pyphilly.org/django-and-sql-server-2018-edition/
我遇到了和 OP 完全一样的问题。我正在使用 PyCharm。 最后我得出结论,我的虚拟环境没有正常工作。我看不出问题是什么......从 python 控制台我可以导入 sql_server,所以它在路径上,但我在 pycharm 中的测试不同意,给出与上述相同的错误。
所以我创建了一个新的虚拟环境,这次是在 pycharm 中,重新安装 requirements.txt 并且成功了。
也许我在 pycharm 配置中有一些细微的错误,通过在 pycharm 中创建一个 venv 以某种方式修复了该错误。也许是一些奇怪的 Windows 事情。