pallets-eco/flask-debugtoolbar

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

Open

#232 aperta il 7 feb 2024

Vedi su GitHub
 (2 commenti) (2 reazioni) (0 assegnatari)JavaScript (132 fork)batch import
good first issue

Metriche repository

Star
 (888 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

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.

Guida contributor