首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python连接到DB抛出错误

问python连接到DB抛出错误
EN

Stack Overflow用户
提问于 2018-04-02 17:36:52
回答 1查看 265关注 0票数 0

我刚开始使用python连接到mysql,并得到以下错误:

代码语言:javascript
复制
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文件中的大部分连接脚本:

代码语言:javascript
复制
   #!/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脚本做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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之前构建它,以便将来更容易管理,以防我不得不从环境变量中提取实际值:

代码语言:javascript
复制
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
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49615914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档