由于密码中的“@”,无法使用 Python Pandas 连接到 mysql 数据库
Can't connect to mysql DB with Python Pandas due to "@" in the password
我正在尝试将 pandas 连接到 MySQL 数据库以写入 table。我的虚拟数据库凭据是:
db_name="ai_db_dev"
db_user="ai_db_user_dev"
db_pwd="abassc@xasas12yz"
db_host="db.rds.amazonaws.com"
db_client="mysql"
我正在使用这样的假 SSL 标志连接到数据库:
db_connection_str=db_client+"://"+db_user+":"+db_pwd+"@"+db_host+"/"+db_name
connect_args={'ssl':{'fake_flag_to_enable_tls': True},
'port': 3306}
db_connection = create_engine(db_connection_str,connect_args= connect_args)
我正在尝试像这样将数据库插入 table:
df.to_sql(con=db_connection, name='ai_table', if_exists='append', index= False)
但是由于密码中的“@”,它没有正确获取主机,因此我无法连接到数据库。非常感谢任何帮助解决此问题的人!
如果您用简单的引号括起您的用户名和密码?
db_connection_str = f"{db_client}://'{db_user}':'{db_pwd}'@{db_host}/{db_name}"
>>> db_connection_str
"mysql://'ai_db_user_dev':'abassc@xasas12yz'@db.rds.amazonaws.com/ai_db_dev"
尝试 2
from urllib.parse import quote
db_connection_str = f"{db_client}://{db_user}:{quote(db_pwd)}@{db_host}/{db_name}"
输出:
>>> db_connection_str
"mysql://'ai_db_user_dev':'abassc%40xasas12yz'@db.rds.amazonaws.com/ai_db_dev"
SQLAlchemy 有一个 built-in URL.create() 方法可以为你构建一个 properly-escaped URL:
import sqlalchemy as sa
db_name="ai_db_dev"
db_user="ai_db_user_dev"
db_pwd="abassc@xasas12yz"
db_host="db.rds.amazonaws.com"
db_client="mysql"
connection_url = sa.engine.URL.create(
drivername=db_client,
username=db_user,
password=db_pwd,
host=db_host,
database=db_name
)
print(connection_url)
# mysql://ai_db_user_dev:abassc%40xasas12yz@db.rds.amazonaws.com/ai_db_dev
我正在尝试将 pandas 连接到 MySQL 数据库以写入 table。我的虚拟数据库凭据是:
db_name="ai_db_dev"
db_user="ai_db_user_dev"
db_pwd="abassc@xasas12yz"
db_host="db.rds.amazonaws.com"
db_client="mysql"
我正在使用这样的假 SSL 标志连接到数据库:
db_connection_str=db_client+"://"+db_user+":"+db_pwd+"@"+db_host+"/"+db_name
connect_args={'ssl':{'fake_flag_to_enable_tls': True},
'port': 3306}
db_connection = create_engine(db_connection_str,connect_args= connect_args)
我正在尝试像这样将数据库插入 table:
df.to_sql(con=db_connection, name='ai_table', if_exists='append', index= False)
但是由于密码中的“@”,它没有正确获取主机,因此我无法连接到数据库。非常感谢任何帮助解决此问题的人!
如果您用简单的引号括起您的用户名和密码?
db_connection_str = f"{db_client}://'{db_user}':'{db_pwd}'@{db_host}/{db_name}"
>>> db_connection_str
"mysql://'ai_db_user_dev':'abassc@xasas12yz'@db.rds.amazonaws.com/ai_db_dev"
尝试 2
from urllib.parse import quote
db_connection_str = f"{db_client}://{db_user}:{quote(db_pwd)}@{db_host}/{db_name}"
输出:
>>> db_connection_str
"mysql://'ai_db_user_dev':'abassc%40xasas12yz'@db.rds.amazonaws.com/ai_db_dev"
SQLAlchemy 有一个 built-in URL.create() 方法可以为你构建一个 properly-escaped URL:
import sqlalchemy as sa
db_name="ai_db_dev"
db_user="ai_db_user_dev"
db_pwd="abassc@xasas12yz"
db_host="db.rds.amazonaws.com"
db_client="mysql"
connection_url = sa.engine.URL.create(
drivername=db_client,
username=db_user,
password=db_pwd,
host=db_host,
database=db_name
)
print(connection_url)
# mysql://ai_db_user_dev:abassc%40xasas12yz@db.rds.amazonaws.com/ai_db_dev