Se connecter à MS SQL Server avec L'authentification Windows en utilisant Python?

Comment connecter MS SQL Server en utilisant L'authentification Windows, avec la bibliothèque pyodbc?

je peux me connecter via MS Access et SQL Server Management Studio, mais je ne peux pas obtenir une chaîne ODBC pour Python.

Voici ce que j'ai essayé (sans '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]')
35
demandé sur stackoverflowuser95 2013-05-13 09:32:41

3 réponses

Vous pouvez spécifier la chaîne de connexion comme une longue chaîne qui utilise des points-virgules (;) comme séparateur d'arguments.

exemple:

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()

pour les chaînes de connexion avec beaucoup de paramètres, ce qui suit va accomplir la même chose mais d'une manière un peu plus lisible:

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

(notez qu'il n'y a pas de virgule entre les différentes composantes de la chaîne.)

51
répondu Gord Thompson 2016-10-01 19:40:56

L'authentification Windows peut aussi être spécifiée en utilisant un mot-clé. Rien de fonctionnellement différent de la réponse acceptée, je pense que cela rend le formatage du code un peu plus facile:

cnxn = connect(driver='{SQL Server}', server='localhost', database='test',               
               trusted_connection='yes')
18
répondu Bryan 2013-05-13 13:05:06

je voulais juste ajouter quelque chose comme je vois les solutions ici en utilisant localhost; D'après mon expérience, SQL Server a des problèmes avec cela, pas sûr si C'est le pilote ODBC ou le service itse, et préfère l'utilisation de (local) si vous ne voulez pas spécifier le nom des machines locales.

cnxn = connect(driver='{SQL Server}', server='(local)', database='test',               
               trusted_connection='yes')
0
répondu Allan Elder 2017-12-26 10:09:57