通过 ODBC 使用 Python 连接到 MySQL 数据库的问题

Posted

技术标签:

【中文标题】通过 ODBC 使用 Python 连接到 MySQL 数据库的问题【英文标题】:Problem connecting to MySQL database using Python through ODBC 【发布时间】:2021-08-11 12:25:53 【问题描述】:

我在建立与 mysql 数据库的连接时遇到问题 无论我尝试或更改什么,我似乎都遇到了同样的错误。我希望能够使用 python 来使用 ODBC 修改 MySQL 数据库,但是对此我不知道该怎么做。这是错误信息:

Traceback(最近一次调用最后一次): 文件“C:\Users\Lutho\PycharmProjects\pyODBC\main.py”,第 17 行,在 conx = pyodbc.connect(f'''DRIVER=driver; pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]Named Pipes Provider: 无法打开与 SQL Server [53] 的连接。(53) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]登录超时已过期 (0);[08001] [Microsoft][ODBC Driver 17 for SQL Server]与 SQL Server 建立连接时发生网络相关或特定于实例的错误. 找不到服务器或无法访问服务器。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。(53)')

我使用的代码:

import pyodbc

# define the server and database name
driver = 'ODBC Driver 17 for SQL Server'
server = 'Local instance MySQL80'
database = 'tarsdb'
username = 'root'
password = '1234'

# define connection string
conx = pyodbc.connect(f'''DRIVER=driver; 
                          SERVER=server; 
                          DATABASE=database;
                          Uid=username;
                          Pwd=password;''')
# create connection cursor
cursor = conx.cursor()

我还尝试使用 Trusted_Connection=yes 并将我的 MySQL 文件移动到与我的 python 文件相同的文件夹中,但没有任何效果。有什么我不知道的东西我想念的吗?如果您能解决我的问题,将不胜感激。 (如果问题看起来很乱,就知道我在格式化它时遇到了问题。)

【问题讨论】:

您为什么要使用用于SQL Server 的驱动程序,即ODBC Driver 17 for SQL Server,来尝试连接到MySQL 数据库? 您正在尝试使用 Microsoft SQL Server 的 ODBC 驱动程序连接到 MySQL 服务器。要从 Python 连接到 MySQL,请考虑使用 mysqlclient 或 pymysql @norie 我认为这是同一回事,当您尝试连接到 MySQL 数据库时,它被视为服务器。 @GordThompson 我会试一试,然后回复你。 谢谢@GordThompson,我的程序现在似乎正在运行。我决定使用 pymysql。 【参考方案1】:

当目标数据库是 MySQL 时,问题是尝试使用 Microsoft SQL Server 的 ODBC 驱动程序。 ODBC 驱动程序在不同的数据库产品之间不可互换。

可能使用 pyodbc 和“MySQL Connector/ODBC”从 Python 连接到 MySQL,但还有更好的选择,特别是 mysqlclient 或 pymysql。两者都是可靠的选择,尽管在许多情况下 mysqlclient 比 pymysql 快得多。

【讨论】:

以上是关于通过 ODBC 使用 Python 连接到 MySQL 数据库的问题的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 odbc 连接到 Microsoft Azure 数据库

通过 ODBC 连接连接到 Sql Server CE

无法在 linux 机器上通过 ODBC 连接到 informix

CodeIgniter 3.1.10:无法通过 DSN 使用 ODBC 连接到远程数据库

Linux Python 2.7 odbc连接到Progress Open Edge DB

通过 PDO ODBC 将 PHP 连接到 MSSQL