如何使用 django-pyodbc (ubuntu 16.04) 配置数据库设置 Django-MSSQL?

2024-05-15

我是 Django 新手,目前正在尝试使用另一个数据库来保存我的模型(即MS SQL)。我的数据库部署在docker容器中:

903876e64b67        microsoft/mssql-server-linux   "/bin/sh -c /opt/mssq"   5 hours ago         Up 5 hours          0.0.0.0:8888->1433/tcp             nauseous_williams

我还创建了一个新用户用于登录 SQL Server。

Username='kucing', password='xxxxx'

对于我的用户,我可以使用 sqlcmd 访问我的数据库,如下所示:

sqlcmd -S localhost,8888 -U kucing -P 'xxxxx'

因此,我更改了数据库的 Django 设置,如下所示:

DATABASES = {
    'default': {
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'videogame', #The DB name
    'USER': 'kucing',
    'PASSWORD': 'xxxxx',
    'HOST': 'localhost',
    'PORT': '8888',

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

然而当我跑步时python manage.py migrate,我收到与身份验证相关的错误:

Traceback (most recent call last):
File "/home/luca/git/learnPython/DjangoTicTacToe/lib/python3.5/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection
  self.connect()
File "/home/luca/git/learnPython/DjangoTicTacToe/lib/python3.5/site-packages/django/db/backends/base/base.py", line 171, in connect
  self.connection = self.get_new_connection(conn_params)
File "/home/luca/git/learnPython/DjangoTicTacToe/lib/python3.5/site-packages/sql_server/pyodbc/base.py", line 302, in get_new_connection
  timeout=timeout)
  pyodbc.Error: ('28000', "[28000] [unixODBC][Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed for user 'kucing'. (18456) (SQLDriverConnect)")

我的配置设置错误了吗?我应该更新我的设置吗?


我已经设法弄清楚这个问题。因为,我在 Linux 中运行 Django 应用程序和 MS SQL 服务器,所以我需要将驱动程序更改为FreeTDS。 这个链接很有用:如何在 Linux 中安装 freetds? https://stackoverflow.com/questions/33341510/how-to-install-freetds-in-linux

在我的主机 (Ubuntu) 上安装完 FreeTDS 驱动程序后,我更新了数据库设置,如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'videogame',
        'USER': 'sa',
        'PASSWORD': 'xxxxx',
        'HOST': 'localhost',
        'PORT': '8888',
        'OPTIONS' : {
            'driver': 'FreeTDS',
            'unicode_results': True,
            'host_is_server': True,
            'extra_params': 'tds_version=7.0;',
            }
    }
}

然后我使用以下命令创建一个超级用户:

python manage.py createsuperuser

最后,我进行数据库迁移:

python manage.py makemigrations; python manage.py migrate
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 django-pyodbc (ubuntu 16.04) 配置数据库设置 Django-MSSQL? 的相关文章

随机推荐