Подключение к MS SQL Server с проверкой подлинности Windows с использованием Python?
Как подключить MS SQL Server с помощью проверки подлинности Windows с помощью библиотеки pyodbc?
Я могу подключиться через MS Access и SQL Server Management Studio, но не могу получить строку ODBC для рабочего соединения для Python.
Вот что я пробовал (также без 'Trusted_Connection=yes'
):
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='[system_name]',
database='[databasename]')
pyodbc.connect('Trusted_Connection=yes', uid='me',
driver='{SQL Server}', server='localhost',
database='[databasename]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
uid='me', pwd='[windows_pass]', database='[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
database='[server_name]\\[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
database='[server_name]\[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}',
database='[server_name]\[database_name]')
Ответы
Ответ 1
Вы можете указать строку подключения как одну длинную строку, которая использует разделители столбцов (;
) в качестве разделителя аргументов.
Рабочий пример:
import pyodbc
cnxn = pyodbc.connect(r'Driver={SQL Server};Server=.\SQLEXPRESS;Database=myDB;Trusted_Connection=yes;')
cursor = cnxn.cursor()
cursor.execute("SELECT LastName FROM myContacts")
while 1:
row = cursor.fetchone()
if not row:
break
print(row.LastName)
cnxn.close()
Для строк подключения с большим количеством параметров следующее будет выполнено одно и то же, но несколько более читаемым образом:
conn_str = (
r'Driver={SQL Server};'
r'Server=.\SQLEXPRESS;'
r'Database=myDB;'
r'Trusted_Connection=yes;'
)
cnxn = pyodbc.connect(conn_str)
(Обратите внимание, что между отдельными строковыми компонентами нет запятых.)
Ответ 2
Аутентификация Windows также может быть указана с использованием ключевого слова. Ничего функционально не отличается от принятого ответа, я думаю, что он упрощает форматирование кода:
cnxn = connect(driver='{SQL Server}', server='localhost', database='test',
trusted_connection='yes')
Ответ 3
Просто хотел добавить что-то, как я вижу решения здесь, используя localhost; по моему опыту, SQL Server имеет проблемы с этим, не уверен, что его драйвер ODBC или служба itse, и предпочитает использовать (local), если вы не хотите указывать имя локальной машины.
cnxn = connect(driver='{SQL Server}', server='(local)', database='test',
trusted_connection='yes')