pallets-eco/flask-debugtoolbar

sql_select/sql_explain not working with Flask-SQLAlchemy 3 & SQLAlchemy 2

Open

#232 ouverte le 7 févr. 2024

Voir sur GitHub
 (2 commentaires) (2 réactions) (0 assignés)JavaScript (132 forks)batch import
good first issue

Métriques du dépôt

Stars
 (888 stars)
Métriques de merge PR
 (Aucune PR mergée en 30 j)

Description

sql_select() (panels/sqlalchemy.py) seems not tested in https://github.com/pallets-eco/flask-debugtoolbar/pull/186/. The updates introduce some API changes that affect how sql_select() operates:

  • get_engine() requires an initialized (init_app()ed) SQLAlchemy instance.
  • The Engine object no longer has an execute() method directly; instead, obtaining a connection is required for execution.
  • The execute() method does not support positional parameters anymore.

To address these issues, I made some local modifications. Here are the specific changes:

142c142,143
<     engine = SQLAlchemy().get_engine(current_app)
---
>     sqlalchemy = current_app.extensions["sqlalchemy"]
>     engine = sqlalchemy.get_engine()
150c151,152
<     result = engine.execute(statement, params)
---
>     with engine.connect() as connection:
>         result = connection.exec_driver_sql(statement, tuple(params[0]))

Given that I'm uncertain about the repercussions these changes might have on backward compatibility with Flask-SQLAlchemy 2.x versions, and due to time constraints on my end, I'm hesitant to submit a pull request myself. However, it would be great if someone could validate and extend these adjustments to ensure compatibility across both Flask-SQLAlchemy 2.x and 3.x versions.

Guide contributeur