Skip to main content

Create a SQLite database containing data from your Toggl account

Project description

toggl-to-sqlite

PyPI GitHub changelog Tests License Python Code style: ruff pre-commit.ci status

Save data from Toggl to a SQLite database using the modern Toggl API v9.

Features

  • Toggl API v9 - Uses the latest Toggl API for maximum compatibility
  • Complete Data Export - Time entries, workspaces, and projects
  • Flexible Date Ranges - Fetch all data or specify custom date ranges
  • SQLite Storage - Portable, queryable database format
  • 100% Test Coverage - Reliable and well-tested codebase
  • Modern Python - Supports Python 3.9+
  • Modern Tooling - Built with uv, ruff, and automated versioning

How to install

With uv (recommended)

$ uv add toggl-to-sqlite

With pip

$ pip install toggl-to-sqlite

Usage

You will need to first obtain a valid API token for your toggl account. You can do this by running the auth command and following the prompts:

$ toggl-to-sqlite auth
You will need to get your API Token from this page

https://track.toggl.com/profile

Once you have your API Token enter it at the command line.

Authentication tokens written to auth.json

Now you can fetch all of your items from toggl like this:

$ toggl-to-sqlite fetch toggl.db

NB! By default toggl-to-sqlite only fetches data from the 25 previous days. As an alternative you can specify to get time_entries since a specific date. You do this by specifying the since option:

$ toggl-to-sqlite fetch -s 2021-03-13

You can choose to get only time_entries, projects, or workspaces by speciying a type in the argument like this.

To get ONLY your workspaces:

$ toggl-to-sqlite fetch -t workspaces toggl.db

To get your workspaces and projects:

$ toggl-to-sqlite fetch -t workspaces -t projects toggl.db

The default is to get all three of time_entries, projects, and workspaces

toggl-to-sqlite --help

Usage: toggl-to-sqlite [OPTIONS] COMMAND [ARGS]...

  Save Toggl data to a SQLite database

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  auth   Save authentication credentials to a JSON file
  fetch  Save Toggl data to a SQLite database

Using with Datasette

The SQLite database produced by this tool is designed to be browsed using Datasette. Use the datasette-render-timestamps plugin to improve the display of the timestamp values.

Development

This project uses modern Python tooling for development.

Prerequisites

  • Python 3.9+
  • uv (recommended) or pip

Setup with uv (recommended)

git clone https://github.com/ryancheley/toggl-to-sqlite
cd toggl-to-sqlite
uv sync --extra test

Setup with pip

git clone https://github.com/ryancheley/toggl-to-sqlite
cd toggl-to-sqlite
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e ".[test]"

Running tests

# With uv
uv run pytest

# With pip
pytest

Code quality

This project uses ruff for linting and formatting:

# With uv
uv run ruff check .          # Linting
uv run ruff format .         # Formatting

# With pip
ruff check .
ruff format .

Version management

Versions are automatically managed using git tags:

# Create a new version
git tag v0.9.0
git push origin v0.9.0

# Or use the bump script
python bump-version.py patch  # 0.8.2 -> 0.8.3
python bump-version.py minor  # 0.8.2 -> 0.9.0
python bump-version.py major  # 0.8.2 -> 1.0.0

See CONTRIBUTING.md for more information on contributing to this project.

Requirements

  • Python 3.9 or higher
  • Valid Toggl account with API access

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

toggl_to_sqlite-0.9.0.tar.gz (58.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

toggl_to_sqlite-0.9.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file toggl_to_sqlite-0.9.0.tar.gz.

File metadata

  • Download URL: toggl_to_sqlite-0.9.0.tar.gz
  • Upload date:
  • Size: 58.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for toggl_to_sqlite-0.9.0.tar.gz
Algorithm Hash digest
SHA256 cc51b1b3f5bb25d17a4ff10ab63ee15679bdc74192900f5637beec66d7a40ba5
MD5 c7b1290b7e788e4080baa532a4db1487
BLAKE2b-256 bfbaecdec02986f9d1200ed6789e3ad857564917b6153ac95666181a4928e6f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for toggl_to_sqlite-0.9.0.tar.gz:

Publisher: publish.yml on ryancheley/toggl-to-sqlite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file toggl_to_sqlite-0.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for toggl_to_sqlite-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4c2b72cae89f10136d6b761f783884b730fc224eb8aa89a01f29d526589a8d91
MD5 aa8eee60add91208dc2d1df5eb3d5f3a
BLAKE2b-256 18a62b364660257c7979414b739c832e827fbbc44aaaa41259a45190555af91b

See more details on using hashes here.

Provenance

The following attestation bundles were made for toggl_to_sqlite-0.9.0-py3-none-any.whl:

Publisher: publish.yml on ryancheley/toggl-to-sqlite

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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