2016-05-02 15 views
2

Ich bin nicht in der Lage zu SQL Server von Python (3.4.4 64-Bit) unter Windows 10. Das ist, was ich tat verbinden: Ich thisleider nicht möglich, MSSQL Server von Python unter Windows verbinden

  1. gefunden nette Bibliothek.
  2. Dann folgte ich this Seite und installiert FreeTDS
  3. Danach habe ich pymssql mit diesem Befehl installiert: easy_install pymssql
  4. In SQL Server-Netzwerkkonfiguration aktiviert I Named Pipes und TCP/IP für meine SQLEXPRESS Instanz

In diesem Moment kann ich SQL Server ausführen und eine Verbindung zu meiner Datenbank mithilfe von SQL Server Management Studio herstellen. Wenn ich mich anmelde, verwende ich DESKTOP-1JA5E9F\SQLEXPRESS als Server Name, sa als Login und 123 als Passwort. Außerdem in Python-Shell kann ich pymssql wie importieren:

>>> import pymssql 

Es macht keinen Fehler aus. Ich kann jedoch keine Verbindung zu meiner Datenbankinstanz herstellen. Ich habe versucht, Dutzende Versuche wie:

conn = pymssql.connect(host=r'DESKTOP-1JA5E9F\SQLEXPRESS', 
         user=r'sa', password=r'123', database=r'reestr') 

Der obige Code ^^^ nie abgeschlossen (ich sehe blinkt nur _ in der Schale, dass immer blinkt). Ich habe auch versucht dies:

conn = pymssql.connect(host=r'SQLEXPRESS', user=r'sa', password=r'123', database=r'reestr') 

Dies führt zu pymssql.InterfaceError: Connection to the database failed for an unknown reason.. Ich habe das versucht:

conn=pymssql.connect(host=r'SQLEXPRESS:1433',user=r'sa',password=r'123', database=r'reestr') 

Es führt auch zu der gleichen Fehlermeldung. Also, wenn jemand diese magischen Voodoo-Zaubersprüche kennt, die das tun können, sind Sie willkommen.

+0

Haben Sie eine 'freetds.conf' Datei? http://pymssql.org/de/v2.1.2/freetds.html#configuration –

+0

Ja, ich habe es in C: \ Ordner mit genau den gleichen Inhalt. – Jacobian

+2

http://stackoverflow.com/questions/9165031/connect-to-sql-server-instance-using-pymssql-on-windows Entsprechend diesem Benutzer muss der 'SQL Server Browser'-Dienst auf dem Host des SQL-Servers ausgeführt werden. –

Antwort

2

Gemäß der docs gibt es kein host Schlüsselwort arg mehr, aber server. Außerdem sollte es der Servername, nicht der Instanzname oder der vollständige Instanzname (mit dem Servernamen) sein. Siehe connect() description und examples of name construction for Connection class.

In Ihrem Fall Server-Name ist DESKTOP-1JA5E9F, auch . und (local) sollte funktionieren, da Sie es alle auf lokaler Maschine tun; Der Name Ihrer Instanz lautet SQLEXPRESS.

Versuchen wie diese:

import pymssql 

#for instance with known name 'SQLEXPRESS' 
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F\SQLEXPRESS', 
         user=r'sa', password=r'123', database=r'reestr') 
#on localhost this should work too 
conn = pymssql.connect(server=r'.\SQLEXPRESS', 
         user=r'sa', password=r'123', database=r'reestr') 

#for default instance with port taken from freetds.conf 
#(this probably won't work for your case, because you use named instance 
#instead of default instance, which is named MSSQLSERVER) 
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F', user=r'sa', password=r'123',  
         database=r'reestr') 

#for instance on known port '1433' 
conn = pymssql.connect(server=r'DESKTOP-1JA5E9F:1433', user=r'sa', password=r'123', 
         database=r'reestr') 

Wenn dies nicht helfen, testen Sie die Verbindung mit tsql als described in the docs, zB:

tsql -H DESKTOP-1JA5E9F -p 1433 -U sa -P 123 -D reestr 

oder wenn Sie freetds.conf:

tsql -S 'DESKTOP-1JA5E9F\SQLEXPRESS' -U sa -P 123 -D reestr 
+0

Danke, Nikita! Ich werde es heute überprüfen. Wie bei 'tsql' funktioniert dieser Befehl auf meiner Windows-Maschine nicht, obwohl ich freetds nach der Anweisung installiert habe. Wenn Sie ein wenig mehr Informationen über tsql und die Art der Verwendung unter Windows bereitstellen können, wäre es großartig. – Jacobian

+1

@Jacobian, sieht aus wie 'tslq' ist nicht auf System' PATH', da es eine Erwähnung in den Dokumenten gibt, dass Sie vielleicht einige Ordner von Ihrer Installation zu dem 'PATH' manuell hinzufügen möchten. Aber Sie können es direkt von der Befehlszeile ausführen, ohne die 'PATH'-Variable zu ändern, verwenden Sie einfach die vollständige Pfadangabe. 'tsql' sollte sich irgendwo im FreeTDS-Installationsverzeichnis befinden [wahrscheinlich in' src/apps'] (http://www.freetds.org/userguide/serverthere.htm#SERVERTHERE.TSQL). Verwenden Sie einfach die Windows-Suche, um 'tsql' zu finden. – Nikita

+0

Nun, ich habe zuerst zwei und das letzte Beispiel aus Ihrer Antwort versucht, aber was ich bekomme, ist nur unendliches Blinken von _ in der Konsole. Ich bekomme keine Fehlermeldung, aber auch kein Ergebnis. Das gleiche passiert, wenn ich versuche, mit dem Server mit tsql zu verbinden - die letzte Zeile in der Konsole, die sich nie ändert, ist 'Setting reestr als Standard-Datenbank im Login-Paket ...'. – Jacobian