pyodbc + MySQL + Windows:找不到数据源名称,也没有指定默认驱动程序

我正尝试使用pyodbc连接到Windows Server 2008 R2本地主机上的MySQL 5.6。 我在本地主机上使用了MySQL实例的完整安装,包括ODBC连接器。 我有它连接到一个远程SQL Server实例美丽,但对我来说,我不能让它连接到本地的MySQL实例。 我正在使用来自connectionstrings.com的本指南作为参考。

这是一些代码:

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 

这是错误:

 pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') 

我尝试了一切,从添加Provider=MSDASQL; 在连接string中将ANSI更改为UNICODE 。 有什么build议么?

我有一个类似的问题。 我正在使用Windows 8和MySQL。

我解决问题的方法是通过进入我的

控制面板>系统和安全>管理工具> ODBC数据源

无论是32位或64位版本取决于您的计算机。

然后你点击系统DNS文件。 如果你没有看到任何MySQL驱动程序,你必须点击添加。 它调出一个列表,从该列表中选择MySQL驱动程序。

对我来说,它是MySQL的ODBC 5.3 ANSI(他们也有一个unicode驱动程序)。 点击完成。 一旦你这样做,那么你必须改变你的代码中的连接线到刚刚填写的相应的驱动程序。

例如:

 def create_mysql_conn(): return pyodbc.connect(r'Driver={MySQL ODBC 5.3 ANSI Driver};server=MSSQLSRV;Database=ecomm;Trusted_Connection=yes;') 

这应该工作,或者至少它解决了我的连接问题,因为我正在尝试的一切都得到各种不同的错误。 这是为我解决了这个问题。

在Win64中有两个ODBC环境:32位和64位,你可以使用Python 32位或Python 64位。 检查您使用的Python版本,然后使用适当版本的odbcad32.exe (32位版本位于SysWoW64目录中)创建SystemDSN。 使用SystemDSN,您可以检查是否可以连接到数据库。 然后尝试从Python代码连接到数据库。

您可以通过我的代码配方列出可用于pyodbc ODBC数据源: https : //code.activestate.com/recipes/578815-printing-list-of-odbc-data-sources-with-pyodbc-mod/

前往管理工具和ODBC数据源。 你应该点击DNS文件。 很可能你会看到Microsoft Access和excel作为唯一可用的数据源,所以你需要添加你的SQL server。 我的是SQL server 2008 R2,到目前为止,它已经工作。