utils.py 800 B

123456789101112131415161718192021222324252627282930
  1. from __future__ import annotations
  2. from sqlalchemy import select, event
  3. from flexmeasures.data.models.time_series import Sensor
  4. def get_test_sensor(db) -> Sensor | None:
  5. sensor = db.session.execute(
  6. select(Sensor).filter_by(name="epex_da")
  7. ).scalar_one_or_none()
  8. return sensor
  9. class QueryCounter(object):
  10. """Context manager to count SQLALchemy queries."""
  11. def __init__(self, connection):
  12. self.connection = connection.engine
  13. self.count = 0
  14. def __enter__(self):
  15. event.listen(self.connection, "before_cursor_execute", self.callback)
  16. return self
  17. def __exit__(self, *args, **kwargs):
  18. event.remove(self.connection, "before_cursor_execute", self.callback)
  19. def callback(self, *args, **kwargs):
  20. self.count += 1