Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

356
Vistas
La recuperación de datos de RDS da AttributeError: el objeto 'sqlalchemy.cimmutabledict.immutabledict' no tiene el atributo 'setdefault'

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.

Rastreo de pila de errores

Este es el stacktrace completo del error: ingrese la descripción de la imagen aquí

Versiones actuales del paquete

 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.7

Mis intentos de resolver el problema.

Algunas cosas que he intentado resolver el problema pero sin éxito son:

  • usando el conector pymysql en lugar de mysqlconnector
  • degradar matraz-malvavisco == 0.11.0
  • malvavisco degradado == 3.6.1
  • malvavisco degradado-sqlalchemy == 0.23.1

Más información sobre la configuración de mi aplicación

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")
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

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.4

SQLAlchemy 1.4 se lanzó de forma general el 15 de marzo de 2021.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda