如何使用mysqlconnector使sqlalchemy.create_engine与mysql_native_password连接?


问题内容

我正在使用pandas和sqlalchemy,并且想将DataFrame加载到MySQL数据库中。我目前正在使用以下代码段:

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')

我的问题:有没有办法强制mysql_native_password使用sqlalchemy.create_engine('mysql+mysqlconnector://...)

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


问题答案:

您可以使用connect_args

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

或网址查询

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