Колба не может подключиться к RDS MySQL - PullRequest
0 голосов
/ 21 мая 2019

Я использовал колбу-sqlalchemy с PostgreSQL. Теперь я перешел на 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 Workbench)

Я прочитал этот вопрос. Переключение с SQLite на MySQL с помощью Flask SQLAlchemy поэтому я установил pymysql, но он не работал.

Когда мое приложение пыталось подключить БД, отображается это сообщение об ошибке. кажется, что psycopg2 вызывается, хотя я использую mysql.

Не могли бы вы дать мне совет?

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

1 Ответ

0 голосов
/ 21 мая 2019

В сообщении об ошибке предлагается проверить строку подключения с помощью точки останова отладчика или просто путем печати. ​​

print(app.config['SQLALCHEMY_DATABASE_URI'])
...