簡體   English   中英

如何使用django-pyodbc(ubuntu 16.04)配置數據庫設置Django-MSSQL?

[英]How to configure the Database setting Django-MSSQL using django-pyodbc (ubuntu 16.04)?

我是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)")

我是否錯誤設置了配置? 我應該更新我的設置嗎?

我假設您正在Windows上托管,因為您正嘗試連接到localhost 我強烈建議使用django-pyodbc-azure引擎( https://github.com/michiya/django-pyodbc-azure ),因為它可以用於本地SQL Server或在Azure上,並且維護得最好我已經看過Django SQL Server軟件包多年了。 安裝:

pip install django-pyodbc-azure

這還將安裝pyodbc依賴項。 由於您是在Windows上運行Django(否則,您將不會連接到本地主機),因此可以使用本機客戶端。 這是我要開始進行的設置:

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

        'OPTIONS': {
            'driver': 'SQL Server Native Client 13.0',
        },
    },
}

另外,您永遠不要將密碼發布在Stack Overflow上! 我強烈建議您更改它。 通常,如果您以xxxxx或類似的密碼發布密碼,人們會理解原因。 祝好運!

我設法找出問題所在。 因為我在linux中同時運行Django應用程序和MS SQL Server,所以需要將驅動程序更改為FreeTDS 該鏈接很有用: 如何在Linux中安裝freetds?

在主機(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM