我刚开始使用python连接到mysql,并得到以下错误:
OperationalError: (pymysql.err.OperationalError) (1045, u"Access denied for user 'xxxxxxadmin'@'xx.xx.xx.xx' (using password: YES)") (Background on this error at: http://sqlalche.me/e/e3q8)
xx.xxx.216.44 - - [02/Apr/2018 17:27:49] "GET /testconnect HTTP/1.1" 500 -这是我的python文件中的大部分连接脚本:
#!/usr/bin/python3
from flask import Flask, request
from flask_restful import Resource, Api
from sqlalchemy import create_engine
from json import dumps
from flask.ext.jsonpify import jsonify
db_connect = create_engine("mysql+pymysql://xxxxxxxadmin:password@,mymaindb.xxxxxxxx.us-east-2.rds.amazonaws.com:3306/myDBname")
app = Flask(__name__)
api = Api(app)
class TestConnect(Resource):
def get(self):
conn = db_connect.connect() # connect to database
query = conn.execute("select * from Players") # This line performs query and returns json result
return {'employees': [i[0] for i in query.cursor.fetchall()]} # Fetches first column that is Employee ID
api.add_resource(TestConnect, '/testconnect') # Route_1
if __name__ == '__main__':
app.run(host='0.0.0.0', debug = False)其他背景:
但是,当我试图通过运行python脚本的服务器上的命令行使用完全相同的凭据连接到同一个mysql数据库时,我可以进入。
不确定如何进行更多的测试以获得更好的错误结果,这将帮助我解决这个问题。
更新了,因此我能够通过mysql连接到数据库,使用我在脚本中拥有的连接字符串和信息。,这是否意味着我的python脚本做错了什么?
发布于 2018-04-02 17:49:07
为什么不使用:
mysql+pymysql://xxxxxxxadmin:password@mymaindb.xxxxxxxx.us-east-2.rds.amazonaws.com:3306/myDBname
而不是
mysql+pymysql://xxxxxxxadmin:password@**,**mymaindb.xxxxxxxx.us-east-2.rds.amazonaws.com:3306/myDBname
不知道为什么连接字符串有逗号。可能只是个错误?
在这一点上,我通常在将连接URL传递给create_engine之前构建它,以便将来更容易管理,以防我不得不从环境变量中提取实际值:
HOST = "mymaindb.xxxxxxxx.us-east-2.rds.amazonaws.com"
PORT = 3306
USERNAME = "xxxxxxxadmin"
PASSWORD = "password"
DBNAME = "myDBname"
CONNECTION_URL = 'mysql+pymysql://%s:%s@%s:%s/%s' % (
USERNAME,
PASSWORD,
HOST,
PORT,
DBNAME
)https://stackoverflow.com/questions/49615914
复制相似问题