如何使用mysqlconnector获取sqlalchemy.create_engine以使用mysql_native_password进行连接? [英] How do I get sqlalchemy.create_engine with mysqlconnector to connect using mysql_native_password?
问题描述
我正在使用pandas和sqlalchemy,并且想将DataFrame加载到MySQL数据库中.我当前正在使用以下代码段:
I'm working with pandas and sqlalchemy, and would like to load a DataFrame into a MySQL database. I'm currently using this code snippet:
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')
在此之前已导入
sqlalchemy
,pandas
.
sqlalchemy
, pandas
have been imported prior to this.
我的MySQL后端是8.x,我知道它使用的是caching_sha2_password
.如果我要使用mysql.connector.connect
连接到数据库,并且想使用mysql_native_password
方法,我知道我应该这样指定auth_plugin = mysql_native_password
:
My MySQL backend is 8.x, which I know uses caching_sha2_password
. If I were to connect to the database using mysql.connector.connect
and I want to use the mysql_native_password
method, I know that I should specify auth_plugin = mysql_native_password
like so:
mysql.connector.connect(user=user, password=pw, host=host, database=db, auth_plugin='mysql_native_password')
我的问题:是否可以通过sqlalchemy.create_engine('mysql+mysqlconnector://...)
强制进行mysql_native_password
身份验证?
My question: Is there a way to force mysql_native_password
authentication with sqlalchemy.create_engine('mysql+mysqlconnector://...)
?
任何对此的建议将不胜感激...
Any advice on this would be much appreciated...
推荐答案
You could use connect_args
:
db_connection = sqlalchemy.create_engine(
'mysql+mysqlconnector://user:pwd@hostname/db_name',
connect_args={'auth_plugin': 'mysql_native_password'})
或URL 查询:
db_connection = sqlalchemy.create_engine(
'mysql+mysqlconnector://user:pwd@hostname/db_name?auth_plugin=mysql_native_password')
这篇关于如何使用mysqlconnector获取sqlalchemy.create_engine以使用mysql_native_password进行连接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!