如何使用 mysqlconnector 获取 sqlalchemy.create_engine 以使用 mysql_native_password 进行连接?

Posted

技术标签:

【中文标题】如何使用 mysqlconnector 获取 sqlalchemy.create_engine 以使用 mysql_native_password 进行连接?【英文标题】:How do I get sqlalchemy.create_engine with mysqlconnector to connect using mysql_native_password? 【发布时间】:2019-01-17 21:08:24 【问题描述】:

我正在使用 pandas 和 sqlalchemy,并且想将 DataFrame 加载到 mysql 数据库中。我目前正在使用这个代码sn-p:

db_connection = sqlalchemy.create_engine('mysql+mysqlconnector://user:pwd@hostname/db_name')

some_data_ref.to_sql(con=db_connection, name='db_table_name', if_exists='replace')

sqlalchemypandas 在此之前已导入。

我的 MySQL 后端是 8.x,我知道它使用 caching_sha2_password。如果我要使用mysql.connector.connect 连接到数据库并且我想使用mysql_native_password 方法,我知道我应该像这样指定auth_plugin = mysql_native_password

mysql.connector.connect(user=user, password=pw, host=host, database=db, auth_plugin='mysql_native_password')

我的问题:有没有办法通过sqlalchemy.create_engine('mysql+mysqlconnector://...) 强制进行mysql_native_password 身份验证?

对此的任何建议将不胜感激......

【问题讨论】:

【参考方案1】:

你可以使用connect_args:

db_connection = sqlalchemy.create_engine(
    'mysql+mysqlconnector://user:pwd@hostname/db_name',
    connect_args='auth_plugin': 'mysql_native_password')

或网址query:

db_connection = sqlalchemy.create_engine(
    'mysql+mysqlconnector://user:pwd@hostname/db_name?auth_plugin=mysql_native_password')

【讨论】:

知道为什么我在按照这些说明操作时会收到 got an unexpected keyword argument 'auth_plugin' 错误吗? 新版本的mysqlconnector或完全不同的驱动程序? 是什么让这个答案对我来说适用于 mysql 5.7 是删除 pymsql 然后 pip3 install mysqlclient

以上是关于如何使用 mysqlconnector 获取 sqlalchemy.create_engine 以使用 mysql_native_password 进行连接?的主要内容,如果未能解决你的问题,请参考以下文章

Kafka Connect 未能添加 MySqlConnector

MySqlConnector连接选项

Android 连接 MySQL 数据库教程

MySQLConnector DLL 错误 System.Threading.Tasks.Extensions 链接

牛客题霸-SQL篇——10~20题

sql 语句 获取最大值