我正试着把熊猫和MySQL数据库联系起来,写到表格上。我的虚拟数据库凭据是:
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)我试图在表格中插入分贝,如下所示:
df.to_sql(con=db_connection, name='ai_table', if_exists='append', index= False)但是由于密码中的“@”,它没有正确地拾取主机,因此我无法连接到DB。任何帮助解决这一问题将受到高度赞赏!
发布于 2022-03-08 20:35:43
SQLAlchemy有一个内置的URL.create()方法,它将为您构建一个正确转义的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发布于 2022-03-08 16:25:55
如果你用简单的引号括住你的用户名和密码?
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"https://stackoverflow.com/questions/71398129
复制相似问题