Подтвердить что ты не робот

Подключение к 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]')
4b9b3361

Ответ 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')