sql_select/sql_explain not working with Flask-SQLAlchemy 3 & SQLAlchemy 2
good first issue
`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:
```patch
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.
2 条评论