26

Wie verbinde ich MS SQL Server mit Windows-Authentifizierung mit der Pyodbc-Bibliothek?Verbinden mit MS SQL Server mit Windows-Authentifizierung mit Python?

Ich kann über MS Access und SQL Server Management Studio verbinden, kann aber keine funktionierende Verbindung ODBC-Zeichenfolge für Python erhalten.

Hier ist, was ich versucht habe (auch ohne 'Trusted_Connection=yes'):

pyodbc.connect('Trusted_Connection=yes', 
       driver='{SQL Server}', server='[system_name]', 
       database='[databasename]') 

pyodbc.connect('Trusted_Connection=yes', uid='me', 
       driver='{SQL Server}', server='localhost', 
       database='[databasename]') 

pyodbc.connect('Trusted_Connection=yes', 
       driver='{SQL Server}', server='localhost', 
       uid='me', pwd='[windows_pass]', database='[database_name]') 

pyodbc.connect('Trusted_Connection=yes', 
       driver='{SQL Server}', server='localhost', 
       database='[server_name]\\[database_name]') 

pyodbc.connect('Trusted_Connection=yes', 
       driver='{SQL Server}', server='localhost', 
       database='[server_name]\[database_name]') 

pyodbc.connect('Trusted_Connection=yes', 
       driver='{SQL Server}', 
       database='[server_name]\[database_name]') 

Antwort

41

Sie die Verbindungszeichenfolge als eine lange Zeichenfolge angeben, die Semikolons (;) als Argument Separator verwendet.

Arbeitsbeispiel:

import pyodbc 
cnxn = pyodbc.connect(r'Driver={SQL Server};Server=.\SQLEXPRESS;Database=myDB;Trusted_Connection=yes;') 
cursor = cnxn.cursor() 
cursor.execute("SELECT LastName FROM myContacts") 
while 1: 
    row = cursor.fetchone() 
    if not row: 
     break 
    print(row.LastName) 
cnxn.close() 

Zum Anschluss Strings mit vielen Parametern, die folgenden wird das Gleiche, aber in eine etwas lesbaren Weise erreichen:

conn_str = (
    r'Driver={SQL Server};' 
    r'Server=.\SQLEXPRESS;' 
    r'Database=myDB;' 
    r'Trusted_Connection=yes;' 
    ) 
cnxn = pyodbc.connect(conn_str) 

(Beachten Sie, dass sind keine Kommas zwischen den einzelnen String-Komponenten.)

+0

Danke, dass '. \ 'Syntax den Trick gemacht hat. Beachten Sie, dass 'pyodbc.connect ('Trusted_Connection = yes', driver = '{SQL Server}', Server = '. \ [Servername]', Datenbank = '[Datenbankname]') ebenfalls funktionierte. – stackoverflowuser95

+0

wie man mit userid und passwort verbindet – karnaf

+0

Das hat nicht funktioniert für mich. Der Kommentar unten funktioniert jedoch. – CyprUS

16

Windows-Authentifizierung kann auch speci sein mit einem Schlüsselwort Nichts funktionell verschieden von der akzeptierten Antwort, ich denke, dass es Code einfacher macht etwas Formatierung:

cnxn = connect(driver='{SQL Server}', server='localhost', database='test',    
       trusted_connection='yes') 
+0

Ja, ich schrieb das im Kommentar zur angenommenen Antwort. – stackoverflowuser95

+0

@ stackoverflowuser95 Ihr Kommentar enthält nicht das Schlüsselwort 'trusted_connection', es ist eine Mischung aus Schlüsselwörtern und Zeichenfolgen. Beachten Sie die Unterschiede zwischen den drei Optionen [hier] (https://code.google.com/p/pyodbc/wiki/Module#connect). – Bryan

0

Nur etwas hinzufügen wollten, als ich die Lösungen hier mit localhost zu sehen; Nach meiner Erfahrung hat SQL Server Probleme damit, nicht sicher, ob es der ODBC-Treiber oder der Dienst itse ist, und bevorzugt die Verwendung von (lokal), wenn Sie den Namen der lokalen Maschine nicht angeben möchten.

cnxn = connect(driver='{SQL Server}', server='(local)', database='test',    
       trusted_connection='yes')