web-dev-qa-db-fra.com

Impossible d'ouvrir lib 'ODBC Driver 13 for SQL Server'? Problème de liaison de Sym?

Lorsque j'essaie de me connecter à une base de données de serveur SQL avec pyodbc (sur 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)

Je reçois l'erreur suivante:

Erreur: ('01000', "[01000] [unixODBC] [Gestionnaire de pilotes] Impossible d'ouvrir lib" Pilote ODBC 13 pour SQL Server ': fichier introuvable (0) (SQLDriverConnect) ")

Lorsque je parcours dans l'emplacement actuel du pilote:

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

Cela commence à fonctionner!

Mon odbcinst.ini ressemble à ceci:

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

Comment puis-je obtenir ma référence à driver='{ODBC Driver 13 for SQL Server}' pour recommencer à travailler?

J'ai initialement utilisé ce guide pour installer le pilote. Et j'utilise anaconda sur Mac Sierra si cela aide?

21
emehex

Fonctionnement: 

odbcinst -j

Il a donné: 

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

Au lieu de copier les fichiers dans le répertoire /etc/ (je ne sais pas pourquoi unixODBC pensait qu'ils étaient là), j'ai créé un lien symbolique vers chaque fichier:

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

Cela a résolu le problème.

36
emehex

Dans mon cas, je dois changer la chaîne du pilote de la base de données pyodbc en
driver='{ODBC Driver 17 for SQL Server}' 

en fait, dans mon code python, pyodbc attendait ODBC Pilote 13
mais comme la version du pilote ODBC a été mise à jour (en raison de la mise à jour d'ubuntu) vers la version actuelle ODBC pilote 17 , le problème s'est produit.

16
Uzzal Podder

Dans mon cas, j'ai un Mac OS et les commandes suivantes ont résolu le problème:

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

Je dois ajouter que si vous utilisez un pilote différent (FreeTDS) et que vous omettez de le mentionner dans votre chaîne de connexion, il sera par défaut à driver='{ODBC Driver 17 for SQL Server} ou quelque chose comme ça.

Donc, la solution est de ne pas oublier le pilote, vos paramètres de base de données ressembleront à ceci: 'default': { 'ENGINE': 'sql_server.pyodbc', 'Host': '127.0.0.1', 'NAME': 'mydb', 'PORT': '1433', 'USER': 'sa', 'PASSWORD': '*****', 'OPTIONS':{ 'driver': 'FreeTDS', 'Host_is_server': True, } }

0
Patrick