Próbuję połączyć się z bazą danych SQL Server 2012 przy użyciu SQLAlchemy (z pyodbc) w Pythonie 3.3 (Windows 7-64-bit). Mogę się połączyć za pomocą prostego pyodbc, ale nie udało się połączyć za pomocą SQLAlchemy. Mam konfigurację plików DSN dla dostępu do bazy danych.Łączenie z programem SQL Server 2012 przy użyciu sqlalchemy i pyodbc
pomyślnie połączyć się przy użyciu prostej pyodbc tak:
con = pyodbc.connect('FILEDSN=c:\\users\\me\\mydbserver.dsn')
Dla SQLAlchemy Próbowałem:
import sqlalchemy as sa
engine = sa.create_engine('mssql+pyodbc://c/users/me/mydbserver.dsn/mydbname')
Sposób create_engine
faktycznie nie skonfigurowania połączenia i uda, ale IIF Próbuję coś, co powoduje, że sqlalchemy faktycznie konfiguruje połączenie (np. engine.table_names()
), trwa to chwilę, ale następnie zwraca ten błąd:
DBAPIError: (Error) ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect)') None None
Nie jestem pewien, co się dzieje źle, jak zobaczyć, jaki łańcuch połączenia jest rzeczywiście przekazywane do pyodbc przez sqlalchemy. Z powodzeniem używam tych samych klas sqlalchemy z SQLite i MySQL.
Z góry dziękuję!
Dzięki. Instancja SQL Server jest jedyną, której nie ma na komputerze, nad którym pracuję, więc nie byłem pewien, czy dzieje się tu coś śmiesznego. Wystarczy trochę rozszerzyć żądane przez ciebie żądań (ponieważ instancje serwera sql są najwyraźniej nazwane) - 'sa.create_engine ('mssql + pyodbc: // [nazwa maszyny] \\ [nazwa serwera]/[baza danych]')' –
Oni nie Trzeba je nazwać. Łatwiej jest się z nim połączyć i używać instancji serwera sql skonfigurowanej jako "instancja domyślna". Wymienione instancje są wymagane, gdy będziesz hostować wiele instancji serwera sql na jednym serwerze. – marr75