Как мне ввести имя SQL Server в PYPYODBC с обратной косой чертой в имени сервера?

У меня возникают трудности с подключением к экземпляру SQL Server в pypyodbc. В имени сервера есть обратная косая черта, например, «имя_сервера\что-то», а не просто имя сервера.

В pypyodbc я пробовал все варианты,

Server=servername\something
Server=servername\\something
Server=[servername\something]
Server=[servername\\something]

Но ни один из них, кажется, не работает. Я получаю следующее сообщение об ошибке

pypyodbc.DatabaseError: ('08001', '[08001] [Microsoft] [Драйвер ODBC SQL Server] [DBNETLIB] SQL Server не существует или доступ запрещен.')

Как я могу передать имя сервера?

Я могу нормально подключаться к другим серверам, если у них нет обратной косой черты


person vksf    schedule 31.01.2017    source источник


Ответы (1)


Как указано в документации драйвера Microsoft ODBC, для аргумента Server= в ваша строка подключения

Чтобы указать именованный экземпляр SQL Server, добавьте \InstanceName.

Таким образом, вопрос на самом деле заключается в том, «Как получить одну обратную косую черту в строке Python?»

Один из способов — использовать необработанные строковые литералы (r""). Это работает для меня:

conn_str = (
    r"Driver={ODBC Driver 11 for SQL Server};"
    r"Server=PANORAMA\SQLEXPRESS;"
    r"Database=myDb;"
    r"Trusted_Connection=yes;"
    )
conn = pypyodbc.connect(conn_str)
person Gord Thompson    schedule 03.02.2017