如何使用mysqlalchemy.create\ engine和mysqlconnector使用mysql\本地\密码进行连接?

xtfmy6hx  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(357)

我正在使用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')
``` `sqlalchemy` ,  `pandas` 在此之前已经进口。
我的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://...)` ?
如果您对此有任何建议,我们将不胜感激。。。
cnwbcb6i

cnwbcb6i1#

你可以用 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')

相关问题