web-dev-qa-db-fra.com

Impossible de se connecter à MS SQL avec pyodbc

Je viens de passer des heures à essayer de réaliser une tâche simple. J'avais le code python que j'avais l'habitude de faire dans Windows et il accédait à une base de données MS SQL sur un serveur Windows 2008. J'ai configuré un serveur Ubuntu et je veux exécuter ce script sur ce serveur. après avoir installé pyodbc, freetds et d'autres paquets, je ne peux toujours pas me connecter à la base de données. La chaîne de connexion Windows que j'utilisais était la suivante:

connectionString='DRIVER={SQL Server};SERVER=IP;DATABASE=Market;UID=usr;PWD=psw

après des recherches approfondies, je me suis retrouvé avec trois fichiers de connexion odbc.ini, odbcinst.ini et freetds.conf, qui ressemblent à ceci:

odbc.ini:

[sqlserverdatasource] Pilote = FreeTDS Description = ODBC connexion via FreeTDS Trace = No Nom du serveur = sqlserver Database = Market;

odbcinst.ini

[FreeTDS] Description = Pilote TDS (Sybase/MS SQL) Pilote = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so CPTout = CPReuse = FileUsage = 1

freetds.conf

[sqlserver] Host = 10.23.11.10; port = 1433; tds version = 5.0

Maintenant, j'ai essayé de tester la connexion avec ce qui suit

tsql -S sqlserver

mais j'obtiens l'erreur suivante

Erreur 20017 (gravité 9): EOF inattendu de l'erreur de système d'exploitation du serveur 115, "Opération en cours" Erreur 2000 (gravité 9): échec de la connexion à Adaptive Server.

Je pensais que cela prendrait quelques minutes pour que tout se passe bien, mais j'ai perdu de nombreuses heures. Toute aide est très appréciée. Merci.

2
Pedro Braz

Si vous essayez de vous connecter à SQL Server à partir de votre machine Linux, je vous recommande vivement de suivre ce lien https://Azure.Microsoft.com/en-us/documentation/articles/sql-database-develop-python- simple-ubuntu-linux /

Ceci utilise un autre pilote pymssql python qui utilise FreeTDS pour se connecter à SQL Server. Faites-moi savoir si cela aide.

Meilleur,
Rencontrer

1
meet-bhagdev

Récemment, nous avons développé et testé nos pilotes SQL Server ODBC avec pyODBC 3.0.7 sur Python 3.3 et la connexion a réussi. Tout a bien fonctionné.

Essayez de télécharger le dernier pilote pyODBC https://github.com/mkleehammer/pyodbc et ceci pilote SQL Server ODBC
Il existe un exemple de chaîne de connexion dans la documentation. Vous pouvez l'utiliser.

1
Jordan Sanders

Je me connecte régulièrement aux bases de données en utilisant python. Ma chaîne de connexion est la suivante:

ConnectionString = 'DSN = MyDSN'

DSN signifie Data source Name et ses détails sont stockés dans le fichier odbc.ini sous la forme que vous utilisez:

[MyDSN]

Pilote = FreeTDS

Description = ODBC connexion via FreeTDS

Trace = Non

Nom du serveur = sqlserver

Base de données = marché

USER = DBuser

Mot de passe = yourpwd

0
Marc Vanhoomissen