невозможно подключиться к MSSQL с помощью pyodbc - PullRequest
0 голосов
/ 28 мая 2019

Я уже посмотрел много похожих вопросов на StackOverflow относительно возможности подключения MSSQL к pyodbc, но ни одно из их решений не помогло.
Я пытаюсь подключить базу данных MSSQL, которая лежит на сервере виртуальных машин, и пытаюсь получить доступ к ней из моей локальной системы.
Ниже приведен код:

import pyodbc

server = '172.xxx.xxx.xxx,1443'
database = 'sample_db'
username = 'SA'
password = 'xxxxx'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password+';Trusted_Connection=yes')
cursor = cnxn.cursor()

cursor.execute("SELECT name FROM sys.databases;")
results = cursor.fetchall()
print(results)

Я получаю следующую ошибку:

pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

Если есть какая-либо другая альтернатива pyodbc, которая лучше работает с MSSQL, пожалуйста, укажите это тоже. Любая помощь приветствуется, спасибо.

Редактировать

По предложению @GordThompson я проверил драйвер в pyodbc.drivers() и обнаружил, что в моей системе есть только драйвер «SQL Server», поэтому я изменил драйвер на SQL Server. Настоящий код выглядит следующим образом:

import pyodbc
server = '172.xxx.xxx.xxx,1443'
database = 'sample_db'
username = 'SA'
password = 'xxxxx'
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password+';Trusted_Connection=yes')
cursor = cnxn.cursor()

cursor.execute("SELECT name FROM sys.databases;")
results = cursor.fetchall()
print(results)

Но теперь я получаю совершенно другую ошибку, все еще не уверен, что это такое
Ошибка:

pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (53)')

1 Ответ

1 голос
/ 28 июня 2019

Важно не упоминать параметр Trusted_Connection при входе в систему с использованием UID и PWD.Следовательно, когда я удалил параметр Trusted_Connection, он смог успешно установить соединение.Так что у строки соединения, которая позже работала для меня, были только эти,

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

[Так как @GordThompson не опубликовал это как ответ, я помещаю это здесь и закрываю это.
Спасибо @Горд Томпсон]

...