Herstellen einer Verbindung zu SQL Server 2012 mit sqlalchemy und pyodbc

9

Ich versuche, eine Verbindung zu einer SQL Server 2012-Datenbank mithilfe von SQLAlchemy (mit pyodbc) auf Python 3.3 (Windows 7-64-Bit) herzustellen. Ich bin in der Lage, Verbindung mit geraden Pyodbc, aber nicht erfolgreich bei der Verbindung mit SQLAlchemy. Ich habe dsn Datei-Setup für den Datenbankzugriff.

Ich verbinde erfolgreich mit geraden Pyodbc wie folgt:

%Vor%

Für sqlalchemy habe ich versucht:

%Vor%

Die create_engine -Methode baut die Verbindung nicht wirklich auf und ist erfolgreich, aber Wenn ich etwas versuche, das bewirkt, dass sqlalchemy die Verbindung tatsächlich einrichtet (wie engine.table_names() ), dauert es eine Weile, aber dann wird dieser Fehler zurückgegeben:

DBAPIError: (Error) ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect)') None None

Ich bin mir nicht sicher, wo etwas schief läuft, wie man sieht, welche Verbindungszeichenfolge von sqlalchemy an pyodbc übergeben wird. Ich habe erfolgreich die gleichen SQL-Klassen mit SQLite und MySQL verwendet.

Vielen Dank im Voraus!

    
Brad Campbell 01.04.2013, 19:53
quelle

4 Antworten

21

Die dateibasierte DSN-Zeichenfolge wird von SQLAlchemy als Servername = c , Datenbankname = users interpretiert.

Ich bevorzuge die Verbindung ohne die Verwendung von DSNs. Es ist eine Konfigurationsaufgabe weniger, die während Code-Migrationen erledigt werden muss.

Diese Syntax funktioniert mit Windows-Authentifizierung:

%Vor%

Oder mit SQL-Authentifizierung:

%Vor%

SQLAlchemy hat eine gründliche Erklärung der verschiedenen Verbindungszeichenfolgen hier .

    
Bryan 01.04.2013, 20:08
quelle
7

Ich habe eine Update-Information über die Verbindung zu MSSQL Server ohne Verwendung von DSNs und Windows-Authentifizierung. In meinem Beispiel habe ich folgende Optionen: Mein lokaler Servername ist "(localdb) \ ProjectsV12". Lokaler Servername, den ich von Datenbankeigenschaften sehe (Ich verwende Windows 10 / Visual Studio 2015). Mein Datenbankname ist "MainTest1"

%Vor%

Es wird benötigt, um Treiber in Verbindung zu spezifizieren. Sie können Ihre Client-Version in finden:

  

Systemsteuerung & gt; Systeme und Sicherheit & gt; Verwaltungstools. & gt; ODBC-Daten   Quellen & gt; System DSN Tab & gt; Hinzufügen

Schauen Sie sich die SQL Native Client Version von der Liste an.

    
Andrew 20.04.2016 14:42
quelle
1
%Vor%     
pooja karande 18.03.2018 01:03
quelle
1

Ich möchte hier nur die neuesten Informationen hinzufügen: Wenn Sie eine Verbindung über DSN-Verbindungen herstellen:

%Vor%

Wenn Sie eine Verbindung über Hostname-Verbindungen herstellen:

%Vor%

Weitere Informationen finden Sie im "Offiziellen Dokument"

    
ssword 27.03.2018 18:28
quelle