web-dev-qa-db-fra.com

Linux python3 - Impossible d'ouvrir la bibliothèque 'SQL Server'

J'essaie de me connecter à une base de données de serveur Microsoft Azure SQL.

Voici comment j'essaye de me connecter:

 conn = pyodbc.connect('DRIVER={SQL Server};SERVER=%s' % (self.config.get("Sql", "DataSource")),
                        user= self.config.get("Sql", "UserId"),
                        password=self.config.get("Sql", "Password"),
                        database=self.config.get("Sql", "Catalog"))

Je reçois une erreur en excutant cette ligne. L'erreur:

pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found (0) (SQLDriverConnect)")

Vous ne pouvez pas comprendre pourquoi cela se produit, une idée?

12
Montoya

Je vous recommande également d'installer le pilote ODBC puis d'essayer d'utiliser pyodbc. Je suppose que vous êtes sur une machine Ubuntu 15.04+.

Pour installer le pilote ODBC, suivez les instructions suivantes:

Sudo su
wget https://gallery.technet.Microsoft.com/ODBC-Driver-13-for-Ubuntu-b87369f0/file/154097/2/installodbc.sh
sh installodbc.sh

Une fois que vous avez fait cela, installez pyodbc en utilisant pip et essayez le script suivant:

import pyodbc
server = 'tcp:myserver.database.windows.net'
database = 'mydb'
username = 'myusername'
password = 'mypassword'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT @@version;")
row = cursor.fetchone()
while row:
    print row
    row = cursor.fetchone()

Laissez-moi savoir comment ça se passe.

À votre santé,
Rencontrer

17
meet-bhagdev

remplacer DRIVER={SQL Server} avec DRIVER={/opt/Microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1}

10
Jason

Télécharger les dépendances dépend de votre plate-forme, (pour les autres OS Téléchargez vos dépendances )

Cet exemple pour Ubuntu:

# Sudo su 
curl https://packages.Microsoft.com/keys/Microsoft.asc | apt-key add -

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version

#Ubuntu 14.04
# curl https://packages.Microsoft.com/config/ubuntu/14.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

#Ubuntu 16.04
curl https://packages.Microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

# #Ubuntu 18.04
# curl https://packages.Microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

# #Ubuntu 18.10
# curl https://packages.Microsoft.com/config/ubuntu/18.10/prod.list > /etc/apt/sources.list.d/mssql-release.list

# #Ubuntu 19.04
# curl https://packages.Microsoft.com/config/ubuntu/19.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

exit
Sudo apt-get update
Sudo ACCEPT_EULA=Y apt-get install msodbcsql17
# optional: for bcp and sqlcmd
Sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
Sudo apt-get install unixodbc-dev

puis changer,

DRIVER={/opt/Microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1} 

DRIVER={ODBC Driver 17 for SQL Server}
0