Skip to main content

A simple way of logging how long it takes for SQLAlchemy queries to run.

Project description

Formatter Build Status codecov PyPI version PyPI - Python Version

Description

Provides a simple way to find slow SQL queries when using SQLAlchemy.

Hooks into the SQLAlchemy events system to find when queries start and finish. Note that this is not meant to serve as a profiler and will not explain why your queries are slow, just tell you which ones are. See SQLAlchemy docs about performance for profiling if you need to find out how much time a query spends waiting for database response, fetching the data and ORM operations.

Installation

This is a pure python package, so it can be installed with pip install simple-sqla-timer or any other dependency manager.

Usage

Run this function at the start of your application:

from simple_sqla_timer import setup_query_timer

setup_query_timer()

By default, this will log the start of the statements and their durations to the simple_sqla_timer logger, with debug level. You can override this behaviour by specifying a custom logging function:

import logging
from simple_sqla_timer import setup_query_timer

def my_log_function(statement: str, duration: float) -> None:
    logging.info("Query: %s\nDuration:%f", statement, duration)

setup_query_timer(my_log_function)

Important: The query timer must be set up before the application opens SQLAlchemy Engine connections. Any connections opened before setting up the timer will not have their statements logged.

Development

This library uses the poetry package manager, which has to be installed before installing other dependencies. Afterwards, run poetry install to create a virtualenv and install all dependencies.

Black is used (and enforced via workflows) to format all code. Poetry will install it automatically, but running it is up to the user. To format the entire project, run black ..

Contributing

This project uses the Apache 2.0 license and is maintained by the data science team @ Barbora. All contributions are welcome in the form of PRs or raised issues.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simple-sqla-timer-0.1.0.tar.gz (7.5 kB view hashes)

Uploaded Source

Built Distribution

simple_sqla_timer-0.1.0-py3-none-any.whl (7.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page