Metadata-Version: 2.4
Name: dbworkload
Version: 0.12.1
Summary: Workload framework
License: Apache-2.0
License-File: LICENSE
Author: Fabio Ghirardello
Requires-Python: >=3.11,<4
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Provides-Extra: all
Provides-Extra: cassandra
Provides-Extra: convert
Provides-Extra: mariadb
Provides-Extra: mongo
Provides-Extra: mysql
Provides-Extra: odbc
Provides-Extra: oracle
Provides-Extra: pinecone
Provides-Extra: postgres
Provides-Extra: spanner
Requires-Dist: cassandra-driver ; extra == "all" or extra == "cassandra"
Requires-Dist: fastdigest (>=0.12.0,<0.13.0)
Requires-Dist: fastembed (>=0.7.3,<0.8.0) ; extra == "convert"
Requires-Dist: google-cloud-spanner ; extra == "all" or extra == "spanner"
Requires-Dist: jinja2
Requires-Dist: langchain-core (>=1.0.5,<2.0.0) ; extra == "convert"
Requires-Dist: langchain-ollama (>=1.0.0,<2.0.0) ; extra == "convert"
Requires-Dist: langchain-openai (>=1.0.2,<2.0.0) ; extra == "convert"
Requires-Dist: langgraph (>=1.0.3,<2.0.0) ; extra == "convert"
Requires-Dist: mariadb ; extra == "all" or extra == "mariadb"
Requires-Dist: mysql-connector-python ; extra == "all" or extra == "mysql"
Requires-Dist: numpy
Requires-Dist: openai (>=2.8.0,<3.0.0) ; extra == "convert"
Requires-Dist: oracledb ; extra == "all" or extra == "oracle"
Requires-Dist: pandas
Requires-Dist: pgvector (>=0.4.1,<0.5.0) ; extra == "convert"
Requires-Dist: pinecone[asyncio,grpc] (>=8.0.0,<9.0.0) ; extra == "all" or extra == "pinecone"
Requires-Dist: plotext
Requires-Dist: plotly
Requires-Dist: prometheus-client
Requires-Dist: psutil (>=7.0.0,<8.0.0)
Requires-Dist: psycopg ; extra == "all" or extra == "postgres"
Requires-Dist: psycopg-binary ; extra == "all" or extra == "postgres"
Requires-Dist: pymongo ; extra == "all" or extra == "mongo"
Requires-Dist: pyodbc ; extra == "all" or extra == "odbc"
Requires-Dist: pyyaml
Requires-Dist: sentence-transformers ; extra == "pinecone"
Requires-Dist: sqlparse
Requires-Dist: tabulate
Requires-Dist: typer[all]
Project-URL: Homepage, https://dbworkload.github.io/dbworkload/
Project-URL: Repository, https://github.com/dbworkload/dbworkload
Description-Content-Type: text/markdown

# dbworkload

`dbworkload` is a Python utility for creating and running bespoke database
workload scripts.

It is designed for cases where you want full control over the workload logic,
but do not want to rebuild the surrounding execution machinery every time. You
write the workload as a Python class; `dbworkload` handles the operational
pieces around it, such as concurrency, process/thread execution, run duration,
iteration limits, scheduling, metrics collection, and result output.

## Why use it?

Database workloads are often highly specific: the order of transactions, the
statements inside each transaction, the shape of generated data, and the way
that data changes over time all matter. `dbworkload` keeps that logic in your
hands while providing a reusable runner around it.

With `dbworkload`, you can:

- model realistic application flows as Python code;
- control which transactions run, in which order, and with which data;
- scale execution across configurable processes, threads, and connections;
- run workloads for a fixed duration or number of iterations;
- collect and export execution statistics;
- target different databases by installing the driver extras you need.

## How it works

A workload is a Python class that defines how connections are set up and what
each execution loop should do. At runtime, `dbworkload` imports that class,
starts the requested level of concurrency, opens database connections, executes
the workload loop, aggregates stats, and stops when the configured limit is
reached or the run is interrupted.

This split keeps the workload script focused on database behavior while the
runner handles the repeatable mechanics of executing it.

## Documentation

The README is only a short introduction. For installation, examples, CLI
reference, supported drivers, and workload authoring details, visit the
official documentation:

<https://dbworkload.github.io/dbworkload/>

## License

`dbworkload` is released under the Apache License Version 2.0 license.

