我正试图在 MySQldb 的帮助下连接到AWS数据库。
当我将其与配置连接时:
DATABASES = {
"default": {
"host": "xxxxx-xxxx.xxxxxx.us-west-x.xxxx.amazonaws.com",
"port": 3306,
"user": "<name>",
"passwd": "********",
"db": "<db_name>",
"charset": "utf8",
}
}
使用 MySQLdb :
def get_mysql_connection(dbname="default"):
"""
Returns a connection to database specified in settings
by the given dbname.
"""
config = settings.DATABASES[dbname]
return MySQLdb.connect(**config)
我收到此错误:
in get_mysql_connection
return MySQLdb.connect(**config)
File "/usr/local/lib/python3.7/site-packages/MySQLdb/__init__.py", line 84, in Connect
return Connection(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/MySQLdb/connections.py", line 164, in __init__
super(Connection, self).__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (2005, "Unknown MySQL server host 'xxxxx-xxxx.xxxxxx.us-west-x.xxxx.amazonaws.com' (-3)")
我能够使用MySQL Workbench在同一网络上以相同的凭据连接到数据库,但是在Python中连接时出现错误。
我应该在哪里进行更改以使其正常工作?
答案 0 :(得分:1)
我终于找到了解决方法。我发现的问题与网络速度/带宽有关。
从 MySQL Workbench 连接时,它没有任何超时或查询的超时时间非常长,因此它已连接并显示可以执行表和数据库查询。
但是在Python中,它与主机的连接超时非常短。因此,我通过添加参数 connect_timeout
在 config 中增加了超时时间。
现在,配置看起来像这样:
DATABASES = {
"default": {
"host": "xxxxx-xxxx.xxxxxx.us-west-x.xxxx.amazonaws.com",
"port": 3306,
"user": "<name>",
"passwd": "********",
"db": "<db_name>",
"connect_timeout": 180,
"charset": "utf8",
}
}