Me gustaría recuperar datos de usuario de RDS siempre que se llame al extremo de la API {{url}}/api/users/login para autenticar a los usuarios; sin embargo, actualmente tengo problemas para recuperar datos de RDS.
Este es el stacktrace completo del error: 
Flask==1.1.2 Flask-Cors==3.0.10 flask-marshmallow==0.14.0 Flask-Migrate==2.5.3 Flask-RESTful==0.3.8 Flask-SQLAlchemy==2.4.4 marshmallow==3.10.0 marshmallow-sqlalchemy==0.24.1 SQLAlchemy==1.4.0b1 python==3.7Algunas cosas que he intentado resolver el problema pero sin éxito son:
He dockerizado mi aplicación y esta es mi configuración actual:
app.py
from flask_marshmallow import Marshmallow from flask_migrate import Migrate from flask_sqlalchemy import SQLAlchemy from flask_jwt_extended import JWTManager db = SQLAlchemy() ma = Marshmallow() migrate = Migrate() def register_extensions(app: Flask) -> None: db.init_app(app) migrate.init_app(app, db) ma.init_app(app) def create_application() -> Flask: app: Flask = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+mysqlconnector://{DB_USER}:{DB_PASSWORD}@{DB_INSTANCE}:{DB_PORT}" app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False register_extensions(app) app.register_blueprint(users_urls.mod, url_prefix=f"/{BEP_PREFIX}/users") return app app = create_application() CORS(app)modelos.py
class Accounts(db.Model): __tablename__ = 'Accounts' username = db.Column(db.String(100), primary_key=True) password = db.Column(db.String(256), nullable=False) email = db.Column(db.String(255), nullable=False) personnelID = db.Column(db.String(255), nullable=False) userType = db.Column(db.String(45), nullable=False)servicio.py
class UserService(Service): __model__ = Accounts def get(self, username): return Accounts.query.filter_by(username=username).first() user_service = UserService()vistas.py
from bep.users.services import user_service class UserLogin(Resource): def post(self): data = request.get_json() try: userData = user_service.get("test") except Exception: error_str = traceback.format_exc() logger.error("This prints the stack", exc_info=True) return UserServiceError.to_response(error=error_str, comments="Something went wrong while logging in")El problema es un problema conocido en el frasco-sqlalchemy, causado por cambios en SQLAchemy 1.4. Flask-sqlalchemy intenta modificar la URL del motor SQLALchemy, pero estas URL son inmutables en SQLAlchemy 1.4.
El problema se solucionó en Flask-SQLAlchemy 2.5+ (registro de cambios ).
Si no es posible actualizar Flask-SQLAlchemy, el problema se puede solucionar especificando la versión de SQLAlchemy pasada a pip , ya sea a través de la línea de comando
pip install --upgrade 'SQLAlchemy<1.4'o en requisitos.txt
SQLAlchemy<1.4SQLAlchemy 1.4 se lanzó de forma general el 15 de marzo de 2021.