J'essaie de me connecter à MySQL 5.6 sur un hôte local Windows Server 2008 R2 avec pyodbc. J'ai utilisé l'installation complète de l'instance MySQL sur l'hôte local, y compris le connecteur ODBC. Je le connecte magnifiquement à une instance SQL Server distante, mais je ne parviens pas à le connecter à l’instance MySQL locale. J'utilise ce guide de connectionstrings.com comme référence.
Voici un code:
import pyodbc
def create_mssql_conn():
return pyodbc.connect(r'Driver={SQL Server};Server=MSSQLSRV;Database=ecomm;Trusted_Connection=yes;')
def create_mysql_conn():
return pyodbc.connect(r'Provider=MSDASQL;Driver={MySQL ODBC 5.6 UNICODE Driver};Server=127.0.0.1;Database=ecomm;User=root;Password=myP@$$w0rd;Option=3;')
# conn = create_mssql_conn() # This one works
conn = create_mysql_conn() # This one breaks
cursor = conn.cursor()
cursor.execute('SELECT * FROM inventory')
while 1:
row = cursor.fetchone()
if not row:
break
print row
Voici l'erreur:
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
J'ai tout essayé, de l'ajout de Provider=MSDASQL;
à la modification de ANSI
en UNICODE
dans la chaîne de connexion. Aucune suggestion?
J'avais un problème similaire. J'utilise Windows 8 et MySQL.
J'ai résolu le problème en entrant dans ma
panneau de commande> Systèmes et sécurité> Outils d'administration.> Sources de données ODBC
La version 32 bits ou 64 bits dépend de votre ordinateur.
Ensuite, vous cliquez sur le fichier DNS système. Si vous ne voyez pas de pilote MySQL, vous devez cliquer sur Ajouter. Il affiche une liste, à partir de cette liste, sélectionnez le pilote MySQL.
Pour moi, c’était MySQL ODBC 5.3 ANSI (ils ont aussi un pilote Unicode). Cliquez sur Terminer. Une fois que vous avez fait cela, vous devez changer votre ligne de connexion dans votre code pour le pilote correspondant que vous venez de renseigner.
Ex:
def create_mysql_conn():
return pyodbc.connect(r'Driver={MySQL ODBC 5.3 ANSI Driver};Server=MSSQLSRV;Database=ecomm;Trusted_Connection=yes;')
Cela devrait fonctionner, ou du moins, cela a résolu mon problème de connexion, car toutes mes erreurs étaient liées à des erreurs différentes. C'est ce qui a résolu le problème pour moi.
Dans Win64, il existe deux ODBC environnements: 32 et 64 bits et vous pouvez travailler avec Python 32 bits ou Python 64 bits. Vérifiez quelle version de Python vous utilisez, puis utilisez la version appropriée de odbcad32.exe
(la version 32 bits se trouve dans le répertoire SysWoW64
) pour créer SystemDSN. Avec SystemDSN, vous pouvez vérifier si vous pouvez vous connecter à la base de données. Ensuite, essayez de vous connecter à la base de données à partir du code Python.
Vous pouvez lister ODBC sources de données disponibles pour pyodbc
via ma recette de code: https://code.activestate.com/recipes/578815-printing-list-of-odbc-data-sources-with-pyodbc -mod/ /
Allez dans Outils d'administration et les ODBC Sources de données. Vous devriez cliquer sur le fichier DNS. Il est fort probable que Microsoft Access et Excel soient les seules sources de données disponibles. Vous devez donc ajouter votre serveur SQL. Le mien était SQL Server 2008 R2, et jusqu'à présent, cela a fonctionné.