Python — Linux — подключение к MS SQL с учетными данными Windows — FreeTDS+UnixODBC + pyodbc или pymssql

Кажется, нет никаких хороших инструкций по настройке. У кого-нибудь есть хорошая инструкция? Я новичок в Linux, так что будьте нежны. Я видел другой пост то же самое, но без реального ответа.

У меня есть пара проблем.

  1. FreeTDS «кажется» не работает. Я пытаюсь подключиться и получаю следующее сообщение с помощью команды «tsql»: «База данных по умолчанию установлена ​​​​на имя_базы_данных. Возникла проблема с подключением к серверу», но в ней не упоминается, в чем проблема.

    1. Ошибка, которую я получаю, когда пытаюсь подключиться с помощью pyodbc: «pyodbc.Error: ('08S01', '[08S01] [unixODBC][FreeTDS][SQL Server]Невозможно подключиться: Adaptive Server недоступен или не существует ( 20009) (SQLDriverConnectW)')"

    2. Я пробовал что-то подобное с pymssql, но столкнулся с похожими проблемами. Я продолжаю получать ошибки, что я не могу подключиться, но это не говорит мне, почему.


person Keith P    schedule 24.05.2010    source источник
comment
Кажется довольно удивительным, что нет никакого четкого решения для этого.   -  person Keith P    schedule 07.07.2010
comment
Я думаю, это потому, что никто не смог воспроизвести вашу проблему. Возможно, вам придется провести дополнительный анализ вашей системы, например настроить пустую фиктивную базу данных MSSQL и проверить, сохраняется ли проблема. Затем предоставьте сводную информацию о том, из чего именно состоит ваша тестовая установка. Таким образом, другие пользователи смогут обнаружить проблемы в вашей настройке или попробовать аналогичную настройку на своих компьютерах.   -  person vog    schedule 26.08.2010


Ответы (3)


Следующее работает, если вы настроили сервер MS SQL для разрешения удаленных подключений TCP/IP и имеете соответствующего пользователя для подключения.

Вы также должны быть осторожны, чтобы настроить правильное имя хоста для базы данных, как сообщает MS SQL.

import pymssql
connection = pymssql.connect(
            user = 'username', 
            password = 'password', 
            host = 'server', 
            database = 'database',
        )
cursor = connection.cursor()
cursor.execute('select * from db;')
rows = cursor.fetchall()
person Michaelnt    schedule 22.08.2010

При сборке FreeTDS (http://www.freetds.org/userguide/config.htm ):

./configure --with-tdsver=8.0 --enable-msdblib
person kermatt    schedule 16.06.2011

Эта ошибка говорит о том, что версия TDS установлена ​​неправильно. Вы можете установить это в настройках конфигурации FreeTDS. Вы не указываете, какую версию MSSQL вы используете. Но если вы используете, скажем, 2005 год, установка 8.0 в качестве версии TDS будет работать.

person ayaz    schedule 25.10.2010