Я пытаюсь подключиться к базе данных SQL Server 2012 с помощью SQLAlchemy (с pyobbc) на Python 3.3 (Windows 7-64-bit). Я могу подключиться с помощью прямого pyobbc, но не удалось подключиться с помощью SQLAlchemy. У меня есть настройка файла dsn для доступа к базе данных.Подключение к SQL Server 2012 с использованием sqlalchemy и pyodbc
Я успешно подключиться с помощью прямой pyodbc так:
con = pyodbc.connect('FILEDSN=c:\\users\\me\\mydbserver.dsn')
Для SQLAlchemy я пробовал:
import sqlalchemy as sa
engine = sa.create_engine('mssql+pyodbc://c/users/me/mydbserver.dsn/mydbname')
Метод create_engine
фактически не установить соединение и успешно, но IIF Я пытаюсь что-то, что вызывает sqlalchemy для фактической настройки соединения (например, engine.table_names()
), требуется некоторое время, но затем возвращает эту ошибку:
DBAPIError: (Error) ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect)') None None
Я не уверен, что происходит не так, как посмотреть, какая строка соединения действительно передается в pyodbc по sqlalchemy. Я успешно использую те же классы sqlalchemy с SQLite и MySQL.
Заранее благодарен!
Спасибо. Экземпляр SQL Server является единственным, который не находится на машине, над которой я работаю, поэтому я не был уверен, что здесь происходит что-то смешное. Просто чтобы немного расширить список укусов, которые вы указали (поскольку, по-видимому, названы экземпляры сервера SQL) - 'sa.create_engine ('mssql + pyodbc: // [машинное имя] \\ [имя_сервера]/[база данных]')' –
Они не «Надо называть. На самом деле проще подключиться и использовать экземпляр сервера sql, настроенный как «экземпляр по умолчанию». Именованные экземпляры требуются, когда вы будете размещать несколько экземпляров сервера SQL Server на одном сервере. – marr75