简体   繁体   English

Flask 无法连接到 RDS MySQL

[英]Flask cannot connect to RDS MySQL

I used flask-sqlalchemy with PostgreSQL.我在 PostgreSQL 中使用了flask-sqlalchemy。 Now, I switched to RDS MySQL, so I changed SQLALCHEMY_DATABASE_URI form现在,我切换到 RDS MySQL,所以我更改了 SQLALCHEMY_DATABASE_URI 形式

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

to

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

after this, I initialize app like this在此之后,我像这样初始化应用程序

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()

But the app cannot connect to server.但是该应用程序无法连接到服务器。 (I confirmed username, password, endpoint, port, is correct and connected from mysql workbench) (我确认用户名、密码、端点、端口是正确的并从 mysql 工作台连接)

I read this question.我读了这个问题。 Switching from SQLite to MySQL with Flask SQLAlchemy so I installed pymysql, but it didn't work. 使用 Flask SQLAlchemy 从 SQLite 切换到 MySQL,所以我安装了 pymysql,但它不起作用。

When my app tried to connect db, this error message is shown.当我的应用程序尝试连接数据库时,会显示此错误消息。 it seems that psycopg2 is called although I'm using mysql.尽管我使用的是 mysql,但似乎调用了 psycopg2。

Could you please give me some advise?你能给我一些建议吗?

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

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

print(app.config['SQLALCHEMY_DATABASE_URI'])

它可能是 uri 格式:MySQL 中的“dialect+driver://username:password@host:port/database” “mysql://username:password@localhost:####/mydatabase” https://flask- sqlalchemy.palletsprojects.com/en/2.x/config/#connection-uri-format

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

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