microsoft from for sql-server python-3.x odbc anaconda pyodbc

sql-server - from - odbc linux



¿No puede abrir lib ''Driver 13 ODBC para SQL Server''? ¿Problemas de vinculación de Sym? (4)

Corriendo:

odbcinst -j

Dio como resultado

unixODBC 2.3.4 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /Users/emehex/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8

En lugar de copiar los archivos al directorio /etc/ (no estoy seguro de por qué unixODBC pensó que estaban allí), creé un enlace simbólico a cada archivo:

sudo ln -s /usr/local/etc/odbcinst.ini /etc/odbcinst.ini sudo ln -s /usr/local/etc/odbc.ini /etc/odbc.ini

Esto solucionó el problema.

Cuando intento conectarme a una base de datos de servidor sql con pyodbc (en mac):

import pyodbc server = ''####'' database = ''####'' username = ''####@####'' password = ''#####'' driver=''{ODBC Driver 13 for SQL Server}'' pyodbc.connect(''DRIVER=''+driver+'';SERVER=''+server+'';PORT=1443;DATABASE=''+database+'';UID=''+username+'';PWD=''+password)

Obtuve el siguiente error:

Error: (''01000'', "[01000] [unixODBC] [Administrador de controladores] No se puede abrir la biblioteca ''ODBC Driver 13 para SQL Server'': archivo no encontrado (0) (SQLDriverConnect)")

Cuando camino en la ubicación del controlador real:

driver=''/usr/local/lib/libmsodbcsql.13.dylib''

¡Empieza a funcionar!

Mi odbcinst.ini ve así:

[ODBC Driver 13 for SQL Server] Description=Microsoft ODBC Driver 13 for SQL Server Driver=/usr/local/lib/libmsodbcsql.13.dylib UsageCount=1

¿Cómo puedo obtener mi referencia al driver=''{ODBC Driver 13 for SQL Server}'' para comenzar a trabajar nuevamente?

Inicialmente utilicé esta guía para instalar el controlador. ¿Y estoy usando anaconda en Mac Sierra si eso ayuda?


Debo agregar que si está utilizando un controlador diferente (FreeTDS) y en su cadena de conexión omite mencionarlo, se usará de forma predeterminada en driver=''{ODBC Driver 17 for SQL Server} o algo así.

Entonces, la solución no es olvidar el controlador, su configuración de base de datos se verá así: ''default'': { ''ENGINE'': ''sql_server.pyodbc'', ''HOST'': ''127.0.0.1'', ''NAME'': ''mydb'', ''PORT'': ''1433'', ''USER'': ''sa'', ''PASSWORD'': ''*****'', ''OPTIONS'':{ ''driver'': ''FreeTDS'', ''host_is_server'': True, } }


En mi caso, tengo que cambiar la cadena del controlador de la base de datos pyodbc a
driver=''{ODBC Driver 17 for SQL Server}''

en realidad, en mi código python, pyodbc esperaba el controlador ODBC 13
pero, como la versión del controlador ODBC se actualizó (debido a la actualización de ubuntu) a la versión actual del controlador ODBC 17 , se produjo el problema.


En mi caso, tengo un sistema operativo Mac y los siguientes comandos solucionaron el problema:

brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release brew update brew install --no-sandbox msodbcsql mssql-tools