71 votes

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

Lorsque j'essaie de me connecter à une base de données sql server 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][Driver Manager]Can't open lib 'ODBC Driver 13 for SQL Server' : file not found (0) (SQLDriverConnect)")

Lorsque je me déplace dans l'emplacement actuel du pilote :

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

Ça commence à marcher !

Mon odbcinst.ini ressemble à ça :

[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 d'abord utilisé ce guide pour installer le pilote. Et j'utilise anaconda sur Mac Sierra si cela peut aider ?

0 votes

Vous êtes un sauveur de vies

3voto

Devesh Sharma Points 729
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > 
/etc/apt/sources.list.d/mssql-release.list 
apt-get update
ACCEPT_EULA=Y apt-get install msodbcsql17
apt-get -y install unixodbc-dev
sudo apt-get install python3-pip -y
pip3 install --upgrade pyodbc

Utilisez les étapes ci-dessus pour installer correctement le pilote odbc et tout se mettra en place.

2voto

Tomasz Bartkowiak Points 197

J'ai essayé d'établir une connexion à un serveur MS SQL distant déployé sur une machine (Windows) à partir d'une machine externe (Linux). Il m'a fallu un certain temps pour réaliser que vous devez d'abord installer les pilotes sur la machine que vous utilisez. tente d'établir une connexion (c'est-à-dire Linux dans mon cas) !

Si vous utilisez macOS/Linux, ce que vous devez faire est simplement de Installer le pilote ODBC Microsoft pour SQL Server sur Linux et macOS puis suivez les instructions sur Connexion aux bases de données pour votre système d'exploitation particulier.

1 votes

Le lien "Microsoft ODBC Driver for SQL Server for linux/macos" m'a été utile, merci.

0voto

Konrad Sitarz Points 627

Installation qui a fonctionné sur l'Ubuntu 18.04. Je ne suis pas sûr que deux des ./bash_profile et ./bashrc Les exportations sont nécessaires mais je n'ai pas eu le temps de vérifier.

sudo apt-get update
ACCEPT_EULA=Y sudo apt-get -y install msodbcsql17 mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile \
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc \
sudo apt-get -y install unixodbc libc6 libstdc++6 libkrb5-3 libcurl3 openssl debconf unixodbc unixodbc-dev

Ensuite, en tant que conducteur dans l'utilisation de la connexion ODBC Driver 17 for SQL Server qui correspond à la version actuelle d'Azure.

0voto

Je sais que tout le monde a eu la même erreur stupide : mais je rappelle que j'ai passé 30 min à lire cette branche... l'erreur était un espace étrange à la fin de la chaîne de connexion

     SQLALCHEMY_DATABASE_URI: str = "mssql+pyodbc://sa:tt@localhost:1433/babylon_pacemaker?Trusted_connection = no&driver=ODBC+Driver+17+for+SQL+Server " - odd space :(

C'est drôle qu'Alembic fonctionne bien, mais que SQLAlchimy ait une erreur.

0voto

Patrick Points 495

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, celle-ci prendra par défaut la forme suivante driver='{ODBC Driver 17 for SQL Server} ou quelque chose comme ça.

La solution est donc de ne pas oublier le pilote, vos paramètres DB 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, } }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X