我想用raspberrypi中的python连接mysql-rds-db(我想用selectquery从mysql表'face'中获取seq)
我有一个错误,但我不能修复它。
这是rds mysql连接代码:
import rds_config
import pymysql
rds_host = rds_config.rds_host
name = rds_config.rds_user
password = rds_config.rds_pwd
db_name = rds_config.rds_db
conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name,
connect_timeout=10)
with conn.cursor() as cur:
cur.execute("select seq from face")
conn.commit()
rds\配置:
rds_host='rds endpoint'
rds_port=3306
rds_user='user'
rds_pwd='password'
rds_db='db name'
这是回溯:
Traceback (most recent call last):
File "getRds.py", line 18, in <module>
conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=10)
File "/usr/local/lib/python2.7/dist-packages/pymysql/__init__.py", line 94, in Connect
return Connection(*args,**kwargs)
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 327, in __init__
self.connect()
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 598, in connect
self._request_authentication()
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 862, in _request_authentication
auth_packet = self._process_auth(plugin_name, auth_packet)
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 933, in _process_auth
pkt = self._read_packet()
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 683, in _read_packet
packet.check_error()
File "/usr/local/lib/python2.7/dist-packages/pymysql/protocol.py", line 220, in check_error
err.raise_mysql_exception(self._data)
File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 109, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.InternalError: (1049, u"Unknown database 'bsb-rds'")
我已经在vpc安全组中添加了ip地址,并且打开了公共访问。可以通过mysql cli或workbench进行连接。
有人能帮我吗?
1条答案
按热度按时间cygmwpex1#
我遇到了你的问题,我相信我有解决办法:
上下文:我的技术堆栈如下所示
使用aws rds(mysql)
在本地主机上使用flask开发
rds示例名称:“test rds”
实际数据库名称:测试数据库
这就是我的问题所在,我相信你的问题也在同一个地方:
您在连接中使用的是aws rds名称,而不是真正的数据库名称。
只需将连接中的db名称更改为我通过mysql工作台设置的真实db名称,就可以解决这个问题。
其他读者注意事项:
请确保:
如果您是从aws专有网络外部连接,请确保已启用公共访问。这是一个巨大的“明白了”(注意安全风险)
确保你的连接没有被网络阻塞
确保安全组规则允许您的连接