quitar entre diferencia conectar con autenticación autenticacion sql-server sql-server-2008-r2 odbc windows-authentication pyodbc

sql-server - entre - python pyodbc sql server



¿Conectarse a MS SQL Server con autenticación de Windows usando Python? (3)

¿Cómo conecto el servidor MS SQL usando la autenticación de Windows con la biblioteca pyodbc?

Puedo conectarme a través de MS Access y SQL Server Management Studio, pero no puedo obtener una cadena ODBC de conexión funcional para Python.

Esto es lo que he intentado (también sin ''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]'')


Autenticación de Windows también se puede especificar con una palabra clave. Nada funcionalmente diferente de la respuesta aceptada, creo que hace que el formato del código sea un poco más fácil:

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


Puede especificar la cadena de conexión como una cadena larga que usa punto y coma ( ; ) como separador de argumento.

Ejemplo de trabajo:

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

Para cadenas de conexión con muchos parámetros, lo siguiente logrará lo mismo pero de una manera algo más legible:

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

(Tenga en cuenta que no hay comas entre los componentes de cadena individuales).


Solo quería agregar algo cuando veo las soluciones aquí usando localhost; en mi experiencia, SQL Server tiene problemas con esto, no estoy seguro si es el controlador ODBC o el servicio itse, y prefiere el uso de (local) si no desea especificar el nombre de las máquinas locales.

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