Pyodbc - Недействительная строка подключения - Ошибка входа для пользователя

Я получаю эту ошибку, пытаясь подключить внешний SQL-сервер из Django через VPN. Я пробовал разные способы форматирования строки, но не работает.

'28000', [28000] [Microsoft] [Драйвер ODBC 11 для SQL Server] [SQL Server] Ошибка входа для пользователя 'sa'. (18456) (SQLDriverConnect); [28000] [Microsoft] [Диспетчер драйверов ODBC] Недействительный атрибут строки подключения (0); [28000] [Microsoft] [Драйвер ODBC 11 для SQL Server] [SQL Server] Ошибка входа для пользователя sa. (18456))

Код:

from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader
import pyodbc


def stock(request):
    #ConDB
    password='eUHf?+adF6;w'
    server='tcp:10.10.45.1,1433'
    database='master'
    username='sa'

    cnxn = pyodbc.connect('DRIVER={ODBC Driver 11 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
    cursor = cnxn.cursor()

    template = loader.get_template('polls/stocks.html')
    return HttpResponse(template.render({}, request))  

Заранее спасибо.


person Pablo Barrios    schedule 30.07.2020    source источник


Ответы (1)


Ваш пароль содержит точку с запятой, поэтому вы должны заключить его в фигурные скобки, чтобы не запутать синтаксический анализатор строки подключения:

... UID=sa;PWD={eUHf?+adF6;w}
person Gord Thompson    schedule 30.07.2020
comment
Я изменил его, теперь у меня другая ошибка. ('28000', [28000] [Microsoft] [ODBC Driver 11 для SQL Server] [SQL Server] Ошибка входа для пользователя sa. (18456) (SQLDriverConnect); [28000 ] [Microsoft] [Драйвер ODBC 11 для SQL Server] [SQL Server] Ошибка входа для пользователя sa. (18456)) - person Pablo Barrios; 30.07.2020
comment
Дважды проверьте свои учетные данные с помощью автономного инструмента, такого как sqlcmd или SSMS. - person Gord Thompson; 30.07.2020
comment
И посмотрите журнал ошибок SQL. Подробная информация об ошибках входа в систему хранится там, а не возвращается клиенту. - person David Browne - Microsoft; 30.07.2020