Create a SQLite database containing data from your Toggl account
Project description
toggl-to-sqlite
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc51b1b3f5bb25d17a4ff10ab63ee15679bdc74192900f5637beec66d7a40ba5
|
|
| MD5 |
c7b1290b7e788e4080baa532a4db1487
|
|
| BLAKE2b-256 |
bfbaecdec02986f9d1200ed6789e3ad857564917b6153ac95666181a4928e6f7
|
Provenance
The following attestation bundles were made for toggl_to_sqlite-0.9.0.tar.gz:
Publisher:
publish.yml on ryancheley/toggl-to-sqlite
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
toggl_to_sqlite-0.9.0.tar.gz -
Subject digest:
cc51b1b3f5bb25d17a4ff10ab63ee15679bdc74192900f5637beec66d7a40ba5 - Sigstore transparency entry: 238767400
- Sigstore integration time:
-
Permalink:
ryancheley/toggl-to-sqlite@23b66a0e13193399decc83dd08f251c5d6a6ff30 -
Branch / Tag:
refs/tags/v0.9.0 - Owner: https://github.com/ryancheley
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@23b66a0e13193399decc83dd08f251c5d6a6ff30 -
Trigger Event:
push
-
Statement type:
File details
Details for the file toggl_to_sqlite-0.9.0-py3-none-any.whl.
File metadata
- Download URL: toggl_to_sqlite-0.9.0-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c2b72cae89f10136d6b761f783884b730fc224eb8aa89a01f29d526589a8d91
|
|
| MD5 |
aa8eee60add91208dc2d1df5eb3d5f3a
|
|
| BLAKE2b-256 |
18a62b364660257c7979414b739c832e827fbbc44aaaa41259a45190555af91b
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
toggl_to_sqlite-0.9.0-py3-none-any.whl -
Subject digest:
4c2b72cae89f10136d6b761f783884b730fc224eb8aa89a01f29d526589a8d91 - Sigstore transparency entry: 238767401
- Sigstore integration time:
-
Permalink:
ryancheley/toggl-to-sqlite@23b66a0e13193399decc83dd08f251c5d6a6ff30 -
Branch / Tag:
refs/tags/v0.9.0 - Owner: https://github.com/ryancheley
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@23b66a0e13193399decc83dd08f251c5d6a6ff30 -
Trigger Event:
push
-
Statement type: