python - 如何使用 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'})
或 URL查询:
db_connection = sqlalchemy.create_engine(
'mysql+mysqlconnector://user:pwd@hostname/db_name?auth_plugin=mysql_native_password')
推荐阅读
- windows - 在 Windows 中安装 Drake(通过 docker)时出现问题
- php - 为 Laravel 配置 Homestead
- r - 如果一个变量属于一个集合
- javascript - 如何使用脚本标签正确设置 FullCalendar?
- swift - 一种快速输入以下 if 语句的方法
- manim - 在哪里可以找到更多或更少的 mobject 详细描述?
- javascript - 固定第一行和第一列使html表格可滚动
- javascript - 如何防止map函数返回null
- java - 如何在 Web API 中使用 Spring Security?
- reactjs - 无法从按钮元素获取参数值