如何使用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')
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://...)
?
任何对此的建议将不胜感激…
问题答案:
您可以使用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')