为了解决这个问题,我已经在网上搜索了好几天了。在这方面有很多类似的问题,但这些问题似乎都不是我目前正在处理的问题。我正在尝试连接到python中的远程MySQL数据库,以使用pandas.to_sql特性更新表。我能够与MySQL工作台连接,没有任何问题。我还可以使用以下代码进行连接:
self.conn = mysql.connector.connect(host= remote_host,user= db_user, password=db_pass)这允许我在python中很好地查询数据库。但是,为了使用pandas.to_sql,我需要使用sqlalchemy创建和引擎。我尝试过多个不同的端口,甚至离开了端口。下面是我尝试过的代码:
self.engine = create_engine("mysql+mysqlconnector://db_user:db_pass@remote_host:3306/db_name")他们都给了我以下错误
ProgrammingError: (mysql.connector.errors.ProgrammingError) 1045 (28000): Access denied for user 'db_user'@'c-67-176-125-82.hsd1.co.comcast.net' (using password: YES) (Background on this error at: http://sqlalche.me/e/f405)我可以使用create_engine连接到本地数据库,但不能连接远程数据库。
我尝试在服务器上重新启动MySQL,我已经将所有特权授予用户,并刷新了服务器上的所有特权。我甚至尝试使用根用户和密码,但没有成功。
我反复检查了用户名和密码,当然知道它们是正确的,因为它们是我在MySQL工作台中使用的,另外,当我只使用mysql.connector.connect时
我甚至尝试卸载mysql-connector-python并重新安装它。
任何帮助都将不胜感激。
发布于 2020-02-10 23:36:18
如果数据库URL的任何组成部分可能包含可能会混淆URL解析器的特殊字符,最好让sqlalchemy.engine.url.URL为您构造URL。例如:
import sqlalchemy as sa
connection_url = sa.engine.url.URL(drivername="mysql+pymysql",
username="db_user",
password="my:password",
host="localhost",
port="3307",
database="mydb",
)
print(connection_url)
# mysql+pymysql://db_user:my%3Apassword@localhost:3307/mydb注意,密码中的冒号字符是百分比编码为%3A的。
https://stackoverflow.com/questions/60156446
复制相似问题