gpt4 book ai didi

python - pandas to_sql sqlalchemy 与 secure_transport 的连接

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:42 25 4
gpt4 key购买 nike

我正在尝试将数据发送到具有 --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')

我收到以下错误

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)

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

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

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

但这给出了以下错误

    ca = sslp.get('ca')

AttributeError: 'str' object has no attribute 'get'

我可以通过这种方式仅使用 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()
cur.execute("show tables;")

但是我找不到用 sqlalchemy 连接器实现它的方法。有人对如何使它起作用有一些建议吗?

问候

最佳答案

多看几眼后找到了解决方案。

如果未向 Mysql 提供 ca 文件和 key ,通常将其设置为动态生成 ca 文件和 key ,但问题是向 pymysql 发送正确的标志,因此它不会寻找本地 ca 文件。

在这里找到了这个: Unable to make TLS TCP connection to remote MySQL server with PyMySQL, other tools work

您只需传递一个带有“ssl”键的字典,该字典的一个键的值为 True。为清楚起见,我使用键名“fake_flag_to_enable_tls”,但它可以是任何看起来的样子。

connect_args={'ssl':{'fake_flag_to_enable_tls': True}}
connect_string = 'mysql+pymysql://{}:{}@{}/{}'.format(user,pw,host,database)
connector = create_engine(connect_string,connect_args=connect_args)
df = pd.read_csv('iris.data')
df.to_sql('iris',connector,if_exists='replace',index_label='id')

希望其他人觉得这很有用。

关于python - pandas to_sql sqlalchemy 与 secure_transport 的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58396886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com