【问题标题】:Django python 'sql_server.pyodbc' isn't an available database backendDjango python 'sql_server.pyodbc' 不是可用的数据库后端
【发布时间】:2019-07-16 10:00:14
【问题描述】:

我正在尝试将我的 Django 应用程序连接到 apache 服务器上的 microsoft sql 数据库,但我收到以下错误消息:

django.core.exceptions.ImproperlyConfigured: 'sql_server.pyodbc' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
'mysql', 'oracle', 'postgresql', 'sqlite3'

我已经安装了 django-pyodbc-azure,它显示为(pip freeze list)的一部分:

Django==2.1
django-pyodbc==1.1.3
django-pyodbc-azure==2.1.0.0
pyodbc==4.0.25

这里是settings.py数据库配置:

'default': {
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'name',
    'USER': 'user',
    'PASSWORD': 'password',
    'HOST': 'host',
    'PORT': '',

    'OPTIONS': {
        'driver': 'ODBC Driver 17 for SQL Server',
    },

},

在 site-packages 文件夹中,它不显示实际的 django-pyodbc-azure 文件夹,但是当我运行命令 (pip show django-pyodbc-azure) 时,它显示包位置 (/usr/local/lib /python3.5/dist-packages) 这意味着它已成功安装。

所以我不确定是什么问题。

【问题讨论】:

  • 您似乎没有使用虚拟环境,我强烈推荐。 /usr/local/lib/python3.5/ 将是系统 Python 版本,而不是您的虚拟环境。
  • @FlipperPA 感谢您的回复,所以如果我使用虚拟环境并在其中安装 django-pyodbc-azure 真的可以解决我的问题吗?
  • 我猜这是最有可能的罪魁祸首。我总是为每个 Python 项目使用虚拟环境;值得学习,因为它将为您省去很多麻烦!
  • @FlipperPA 我可以在一个项目中创建多个虚拟环境吗?因为我忘记了第一个的名字
  • 我很想知道为什么使用虚拟环境可以解决这个问题,因为这对我来说似乎不合逻辑。我知道它们总是一个好主意,但是仅使用一个怎么能解决问题呢?保持安全,伙计们......

标签: python sql-server django django-pyodbc-azure


【解决方案1】:

我遇到了同样的问题。不知何故,天蓝色后端的安装搞砸了我的项目。

我删除了 django-pyodbc-azure 和 django-mssql-backend 包,因为它们只支持较旧的 django 版本。之后我从https://github.com/microsoft/mssql-django安装了mssql后端

pip uninstall django-pyodbc-azure
pip uninstall django-mssql-backend
pip install mssql-django

然后我将数据库配置为使用'ENGINE': 'mssql'

在此之后,我能够使用 Django 3.2 连接到我们的 MSSQL DB!

【讨论】:

    【解决方案2】:

    尝试安装pip install django-pyodbc-azure

    https://pypi.org/project/django-pyodbc-azure/

    我遇到了同样的问题,并且使用它有效。

    DATABASES = {
        'default': {
            'ENGINE': 'sql_server.pyodbc',
            'NAME': 'Name_database',
            'USER': 'User',
            'PASSWORD': 'Password',
            'HOST': 'IP',
            'PORT': '1433',
            'OPTIONS': {
                'driver': 'ODBC Driver 17 for SQL Server',
            },
        }
    }
    

    【讨论】:

    • 似乎 django-pyodbc-azure 需要 Django 2.*,请注意。
    • 还有其他使用 Django 3.0+ 的解决方案吗?
    猜你喜欢
    • 2019-04-25
    • 2015-12-11
    • 2023-03-29
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2019-01-30
    • 2014-06-07
    相关资源
    最近更新 更多