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

时间:2018-08-10 09:28:10

标签: python mysql sqlalchemy mysql-connector-python

我正在使用熊猫和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://...)身份验证?

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

1 个答案:

答案 0 :(得分:2)

您可以使用connect_args

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

或URL query

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