Я уже посмотрел много похожих вопросов на 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)')