【问题标题】:Flask cannot connect to RDS MySQLFlask 无法连接到 RDS MySQL
【发布时间】:2019-10-07 19:20:30
【问题描述】:

我在 PostgreSQL 中使用了 flask-sqlalchemy。 现在,我切换到 RDS MySQL, 所以我改变了 SQLALCHEMY_DATABASE_URI 表格

app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://**************'

app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://{username}:{password}@{endpoint}:{port}?charset=utf8"

在此之后,我像这样初始化应用程序

from flask import Flask, render_template, request, logging, Response, redirect, flash, jsonify
from flask_cors import CORS
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow

app = Flask(__name__)

db = SQLAlchemy(app)
ma = Marshmallow(app)

class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.String(8),  primary_key=True)
    name = db.Column(db.String, unique=False)
    email = db.Column(db.String, unique=False)

    def __init__(self,params):
        self.id = params['id']
        self.name = params['name']
        self.email = params['email']

class UserSchema(ma.ModelSchema):
    class Meta:
        model = User

@app.route('/get_user', methods=['GET'])
def get_user():
    userid = request.args['id']
    user = User.query.get(userid)
    return user

if __name__ == '__main__':
    app.run()

但应用程序无法连接到服务器。 (我确认用户名、密码、端点、端口是正确的,并从 mysql 工作台连接)

我读过这个问题。 Switching from SQLite to MySQL with Flask SQLAlchemy 所以我安装了pymysql,但是没有用。

当我的应用程序尝试连接数据库时,会显示此错误消息。 虽然我使用的是 mysql,但似乎调用了 psycopg2。

你能给我一些建议吗?

psycopg2.ProgrammingError: invalid dsn: invalid connection option "mysql+pymysql://mysql+pymysql://{username}:{password}{endpoint}:{port}?charset"

【问题讨论】:

  • 可能您的连接字符串缺少'@' b/w 密码和端点..Conn = "mysql+pymysql://{username}:{password}@{endpoint}:{port}/{database}?charset=utf8"
  • 感谢您的建议抱歉,我的问题中遗漏了“@”,我更正了问题
  • 当你创建引擎时。你在做 engine.connect() 吗?你能放完整的堆栈跟踪吗?
  • 你能把完整的堆栈跟踪放在你的问题中
  • 是的,我想查看整个错误日志。

标签: python mysql flask flask-sqlalchemy amazon-rds


【解决方案1】:

可能是 uri 格式:"dialect+driver://username:password@host:port/database" in MySQL "mysql://username:password@localhost:### #/我的数据库" https://flask-sqlalchemy.palletsprojects.com/en/2.x/config/#connection-uri-format

【讨论】:

    【解决方案2】:

    错误消息建议使用调试器断点检查您的连接字符串,或者仅通过打印。

    print(app.config['SQLALCHEMY_DATABASE_URI'])
    

    【讨论】:

    • 感谢您的评论,打印出来的URI是mysql+pymysql://{username}:{password}@{endpoint}:{port}/{database}?charset=utf8
    猜你喜欢
    • 2021-04-17
    • 2018-05-13
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2016-04-15
    • 1970-01-01
    • 2022-11-27
    相关资源
    最近更新 更多