繁体   English   中英

python与数据库的连接抛出错误

[英]python connection to DB throwing error

我不熟悉使用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脚本中的连接字符串和信息连接到我的数据库。 这是否意味着我的python脚本做错了什么?

为什么不使用:

的MySQL + pymysql:// xxxxxxxadmin:password@mymaindb.xxxxxxxx.us-east-2.rds.amazonaws.com:3306 / myDBname

代替

MYSQL + pymysql:// xxxxxxxadmin:密码@ **,** mymaindb.xxxxxxxx.us-east-2.rds.amazonaws.com:3306 / myDBname

不确定为什么您的连接字符串带有逗号。 可能只是一个错字?

关于这一点,我通常在将连接URL传递给create_engine之前先建立连接URL,以使将来在必须从环境变量中提取实际值的情况下更易于管理:

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
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM