Translate Ledger CLI query syntax into BQL
Project description
ledger2bql
Translate Ledger CLI query syntax into BQL
Implemented in Python.
The package is available at https://pypi.org/project/ledger2bql/.
Introduction
BQL is quite a powerful language for slicing and dicing Beancount data. But, when all you need are simple queries, writing every field and filter seems tedios. In comparison, Ledger CLI's syntax is short and efficient. A simple l b bank will list all bank accounts, assuming a well-organized account tree.
The purpose of this project, a simple CLI utility, is to accept a Ledger-like syntax, generate an appropriate BQL statement, and run it for you.
Development
Setup
Clone the repository.
Add an .env file, specifying the BEANCOUNT_FILE location.
BEANCOUNT_FILE=tests/sample_ledger.bean
uv sync
Build
uv build
Run
uv run ledger2bql
or run
l ...
Tests
Since the app is using .env file for environment variables, make sure that BEANCOUNT_FILE is set to the sample_ledger.bean in the tests/ directory.
Usage
Install the package:
uv pip install ledger2bql
# or
uv tool install ledger2bql
Set the BEANCOUNT_FILE variable to point to your Beancount ledger file.
You can create an .env file, to customize different ledgers for different folders.
Run
ledger2bql b card
ledger2bql r card -b 2025-08-01
To get the list of available parameters, simply run
ledger2bql
ledger2bql bal --help
ledger2bql reg --help
Output
Balance
Running
l b
will output
Your BQL query is:
SELECT account, sum(position) GROUP BY account ORDER BY account ASC
+--------------------------+---------------+
| Account | Balance |
|--------------------------+---------------|
| Assets:Bank:Checking | 1,900.00 EUR |
| Assets:Cash:Pocket-Money | -20.00 EUR |
| Equity:Opening-Balances | -1,000.00 EUR |
| Expenses:Food | 100.00 EUR |
| Expenses:Sweets | 20.00 EUR |
| Income:Salary | -1,000.00 EUR |
+--------------------------+---------------+
Register
Command
l r exp
outputs
Your BQL query is:
SELECT date, account, payee, narration, position WHERE account ~ 'exp' ORDER BY date, account
+------------+-----------------+----------------+-------------+------------+
| Date | Account | Payee | Narration | Amount |
|------------+-----------------+----------------+-------------+------------|
| 2025-02-01 | Expenses:Sweets | Ice Cream Shop | Ice Cream | 20.00 EUR |
| 2025-03-01 | Expenses:Food | Grocery Store | Groceries | 100.00 EUR |
+------------+-----------------+----------------+-------------+------------+
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 ledger2bql-0.6.1.tar.gz.
File metadata
- Download URL: ledger2bql-0.6.1.tar.gz
- Upload date:
- Size: 20.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0183dff2f36539b7163d9c8c5b4e4ea99397dda296b3fcfbd48d8407bd908a88
|
|
| MD5 |
ab238eae752267e86992af043c21a563
|
|
| BLAKE2b-256 |
a5d84c6fe62f264ea39c9573bae10006b418caa2bb91be585cc9c1032df00f6b
|
File details
Details for the file ledger2bql-0.6.1-py3-none-any.whl.
File metadata
- Download URL: ledger2bql-0.6.1-py3-none-any.whl
- Upload date:
- Size: 21.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9f2aa4aeba6ad14d5ef6af257fdbab400885b62cb8e9b167e1c5609e703a2f0
|
|
| MD5 |
63ba0b3801fe09ec6e4d3aee1aaf3644
|
|
| BLAKE2b-256 |
3db95128f5366e4e93158a1189fe26cf630fbfcf6c443a144986c8f38627f81a
|