小编en_*_*hai的帖子

pandas to_sql sqlalchemy 与 secure_transport 的连接

我正在尝试将数据发送到具有 --require_secure_transport=ON 的服务器上的 mysql 数据库。

当我尝试使用以下代码连接到它时

import pandas as pd
import pymysql
from sqlalchemy import create_engine

connect_string = 'mysql+pymysql://{}:{}@{}/{}'.format(user,pw,host,database)
connector = create_engine(connect_string)   
df = pd.read_csv('iris.data')
df.to_sql('iris',connector,if_exists='replace',index_label='id')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

InternalError: (pymysql.err.InternalError) (3159, 'Connections using insecure transport are prohibited while --require_secure_transport=ON.') (Background on this error at: http://sqlalche.me/e/2j85)
Run Code Online (Sandbox Code Playgroud)

我已经搜索了如何使连接器使用 secure_transport 的选项,但我还没有找到任何有效的方法。

我发现的一种解决方案要求将 ?ssl=true 添加到 connect_string 的末尾

connect_string = 'mysql+pymysql://{}:{}@{}/{}?ssl=true'.format(user,pw,host,database)
Run Code Online (Sandbox Code Playgroud)

但这给出了以下错误

    ca = sslp.get('ca')

AttributeError: 'str' object has no attribute 'get'
Run Code Online (Sandbox Code Playgroud)

我可以通过这种方式仅使用 pymysql 连接到数据库

ssl={'ssl': {'key': 'ssl/client-key.pem','cert': 'ssl/client-cert.pem','ca': 'ssl/ca-cert.pem'}}
con = pymysql.Connect(host,user,pw,database,ssl=ssl)
cur = con.cursor() …
Run Code Online (Sandbox Code Playgroud)

python ssl sqlalchemy python-3.x pandas

3
推荐指数
1
解决办法
2575
查看次数

标签 统计

pandas ×1

python ×1

python-3.x ×1

sqlalchemy ×1

ssl ×1