MySQL和Python(pyodbc):找不到过程入口点OPENSSL_sk_new_reserve

MySQL和Python(pyodbc):找不到过程入口点OPENSSL_sk_new_reserve,python,mysql,openssl,python-3.7,pyodbc,Python,Mysql,Openssl,Python 3.7,Pyodbc,我正在尝试从Windows 10连接到远程(托管在dreamhost上)MySQL数据库 我安装了最新版本的32位MySQL ODBC驱动程序(我正在运行32位python),并运行以下代码: connection_string = ( r'DRIVER=MySQL ODBC 8.0 ANSI Driver;' r'SERVER=https://mysql.mysite.com;' r'DATABASE=dbname;' r'UID=userid;' r'

我正在尝试从Windows 10连接到远程(托管在dreamhost上)MySQL数据库

我安装了最新版本的32位MySQL ODBC驱动程序(我正在运行32位python),并运行以下代码:

connection_string = (
    r'DRIVER=MySQL ODBC 8.0 ANSI Driver;'
    r'SERVER=https://mysql.mysite.com;'
    r'DATABASE=dbname;'
    r'UID=userid;'
    r'PWD=password;'
    r'charset=utf8mb4;'
    )

cnxn = pyodbc.connect(connection_string)
cursor = cnxn.cursor()
显然,使用正确的服务器、数据库名称、用户ID和密码

我可以使用这些信息和凭据从mysql工作台访问它,但是当我运行上面的代码时,我得到以下消息:

The procedure entry point OPENSSL_sk_new_reserve could not be 
located in the dynamic link library c:\Program Files (x86)
MySQL\Connector ODBC 8.0\libssl-1_1.dll.
当我点击ok(确定)按钮时,我会在控制台中看到以下消息:

Traceback (most recent call last):
  File "C:\Users\pasto\OneDrive\Documents\Python\work.py", line 129, in <module>
    print(get_mysql_data())
  File "C:\Users\pasto\OneDrive\Documents\Python\work.py", line 109, in get_mysql_data
    cnxn = pyodbc.connect(connection_string)
pyodbc.InterfaceError: ('IM003', '[IM003] Specified driver could not be loaded due to system error  127: The specified procedure could not be found. (MySQL ODBC 8.0 ANSI Driver, C:\\Program Files (x86)\\MySQL\\Connector ODBC 8.0\\myodbc8a.dll). (160) (SQLDriverConnect)')
安装(通过pip)mysql连接器,然后尝试

import mysql.connector
    
    mydb = mysql.connector.connect(
      host="https://mysql.mysite.com",
      user="username",
      password="password"
    )
但这正是我想要的

File "C:\Program Files (x86)\Python37-32\lib\site-packages\mysql\
connector\network.py", line 600, in open_connection
errno=2003, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL 
server on 'https://mysql.fairplainpc.com:3306' (11001 getaddrinfo failed)
我已经这样做了好几个小时,几乎要放弃使用请求库来下载一个包含我想要的数据的PHP页面,并对其进行解析,但我更愿意这样做。

我从其他人那里发现了一个类似错误的错误报告

他们的解决方法是安装以前版本的MySQL ODBC驱动程序。他们安装了5.3驱动程序(从20年7月21日起可以找到-从下拉列表中选择)

我卸载了8,安装了5.3,并将驱动程序行更改为

r'DRIVER=MySQL ODBC 5.3 ANSI Driver;'

它立即起作用。

用您的数据尝试此连接字符串:

connection_string = (
'DRIVER={MySQL ODBC 3.51 Driver};'
'SERVER=https://mysql.mysite.com;'
'DATABASE=dbname;'
'USER=userid;'
'PASSWORD=password;'
)
如果您没有自己运行mysql服务器,则可能必须将您的ip地址分配给数据库用户,或者将您的ip添加到排除中

例如,Hostpoint(瑞士):

尝试运行
C:\Windows\SysWOW64\odbcad32.exe
并创建系统DSN,使用“测试”按钮查看连接是否成功。“连接成功”。它显示了我试图连接的表。嗯,好的。在Python代码中,您真的使用了以https://开头的
SERVER=
参数吗。那可能行不通。试着使用
SERVER=mysql.fairplanpc.com
我已经试着放弃https了。它不起作用。同样的错误。啊哈,这是Windows10的东西。我在用Windows8.1进行测试。谢谢你发布答案。但是,驱动程序名称是否仍然显示“8.0”?我不知道它是否是特定于Windows 10的,但根据您的评论,我怀疑是。不,我本想把驾驶路线改成5.3,但忘了。哎呀!我会更正的。我没有安装3.51驱动程序。@PythonPastor您可以在这里下载:。然后,您可以在:ODBC数据源(32位)下查找已安装的驱动程序。我已经安装了5.3驱动程序,并且运行正常。@PythonPastor如果已安装,您可以在“驱动程序”选项卡下的:ODBC数据源(32位)下查找已安装的驱动程序。您将找到所有已安装的驱动程序及其正确名称。
connection_string = (
'DRIVER={MySQL ODBC 3.51 Driver};'
'SERVER=https://mysql.mysite.com;'
'DATABASE=dbname;'
'USER=userid;'
'PASSWORD=password;'
)