Django python 'sql_server.pyodbc'不是可用的数据库后端

dgtucam1  于 2023-01-31  发布在  Go
关注(0)|答案(4)|浏览(350)

我尝试连接我的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冻结列表)的一部分:

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),这意味着它安装成功了。
所以我也不知道是什么问题。

zpqajqem

zpqajqem1#

我也遇到了同样的问题。不知何故,azure后端的安装搞砸了我的项目。
我删除了django-pyodbc-azure和django-mssql-backend包,因为它们只支持旧的django版本。

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

然后,我将数据库配置为使用'ENGINE': 'mssql'
在此之后,我可以连接到我们的MSSQL数据库使用Django 3.2和更新的版本!

vyswwuz2

vyswwuz22#

尝试安装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',
        },
    }
}
uttx8gqw

uttx8gqw3#

mssql-djangoDjango>=2.2 and <4.1的版本一起使用。
截至今天,当前版本的mssql-django==1.1.3支持Django版本>=2.2 and <4.1 www.example.comhttps://github.com/microsoft/mssql-django/blob/c0476cf4e49ab3dcbbab37ccb3e558216841b6dc/setup.py#L41
要使用旧版本的Django,请使用django-pyodbc-azure
https://github.com/microsoft/mssql-django/tree/0b0cee7030795682b37da36a48ebb065a3faa00e添加了对Django==1.8的支持,并删除了以下内容:https://github.com/microsoft/mssql-django/tree/204d1fc0a4ade0ebe3e1df07a943c03b5ab5cf33.
要使用Django==1.8.x,请在pip install "django-pyodbc-azure<1.9"支持Microsoft SQL Server 2005、2008/2008R2、2012、2014和Azure SQL数据库的情况下使用pip install "django-pyodbc-azure<1.9":www.example.comhttps://github.com/microsoft/mssql-django/commit/204d1fc0a4ade0ebe3e1df07a943c03b5ab5cf33#diff-7b3ed02bc73dc06b7db906cf97aa91dec2b2eb21f2d92bc5caa761df5bbc168fR241

    • 注意:**如果您使用的是旧版本的Django(〈2.0.0),安装mssql-django将强制安装/升级到较新的支持版本的Django作为其要求的一部分。

用户可能需要浏览www.example.com、www.example.com文件以了解支持的版本。 readme.md , setup.py files to know the supported versions.

velaa5lx

velaa5lx4#

我使用python:3.9.13-slim-buster,Django 3.2并安装mssql-django

FROM python:3.9.13-slim-buster
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV DEBIAN_FRONTEND noninteractive
ADD odbcinst.ini /etc/
RUN apt-get update -y && apt-get install -y curl gnupg
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update -y && apt-get install -y unixodbc unixodbc-dev tdsodbc freetds-common freetds-bin freetds-dev postgresql python-scipy python-numpy python-pandas
RUN apt-get update && ACCEPT_EULA=Y apt-get -y install mssql-tools msodbcsql17
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
RUN apt-get update
RUN pip install mssql-django
RUN mkdir /code
COPY . /code/
COPY ./requirements.txt /code/
WORKDIR /code
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000

创建文件odbcinst.ini

[FreeTDS]
Description=FreeTDS Driver
Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so

requirements.txt

Django==3.2
django-environ==0.4.5
# psycopg2>=2.8.6,<2.9
uWSGI>=2.0.19.1,<2.1
Pillow >= 9.0.0,<10.0.0

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'mssql',
        'HOST': os.environ.get('DB_HOST_SITO'),
        'NAME': os.environ.get('DB_NAME_SITO'),
        'USER': os.environ.get('DB_USER_SITO'),
        'PASSWORD': os.environ.get('DB_PASS_SITO'),
        'PORT': os.environ.get('DB_PORT_SITO'),
        'OPTIONS': {
            'driver': 'FreeTDS',
            'unicode_results': True,
            'host_is_server': True,
            'driver_supports_utf8': True,
            'extra_params': 'tds_version=7.4',
        }
    },
}

相关问题