High-performance CDB reader for SOFiSTiK® databases with SQL query interface
Project description
A high-performance, completely self-contained CDB reader for SOFiSTiK® databases with a built-in SQL query engine.
Features
An elegant, modern CDB reader designed to make extracting structural engineering data simple, robust, and fast:
- Lightweight & Self-Contained: Completely free of commercial dependencies. Read and parse CDB files anywhere without heavy background installations or dynamic linking issues.
- Run Anywhere (Windows, macOS, Linux): Built with native cross-platform capability from day one. Run analyses, automate reporting, or inspect files seamlessly on your Macbook, a Linux cloud server, or standard Windows PCs.
- Instant SQL Queries: Forget writing complex binary parsing logic. This tool automatically mounts structural CDB data into an easy-to-query format, letting you use standard SQL filters, joins, and aggregations (e.g., extracting specific node coordinates or material properties).
- Instant Loading & Memory Efficient: Employs ultra-fast virtual memory mapping and lazy loading. Even multi-gigabyte files open instantly because it only decodes the specific categories your code or query asks for.
- Simple Command-Line & Python APIs: Comes with a user-friendly command-line interface (CLI) to quickly inspect file info, list categories, or export data to Markdown and JSON, alongside a clean Python API for your custom workflows.
Installation
We recommend using uv for Python package management.
If you want to use the just-cdb CLI globally on your system:
uv tool install just-cdb
Install it directly into your Python project:
uv add just-cdb
// or via pip
pip install just-cdb
You can run the CLI instantly without installing it:
uvx just-cdb
CLI Usage
After installation, the command line interface just-cdb is instantly available.
1. Show Metadata
Get key details about any CDB database file:
just-cdb info path/to/database.cdb
Output:
CDB File Information:
- Source : path/to/database.cdb
- File Size : 5_684_212 bytes
- CDBase Version : v12.7.0.32
- Flags : 0x00000001
- Records : 1_420 / 2_500 (used / max)
- Total Pages (Keys) : 14
- Chain Head Block : 142
- Page Dir Start : 16
- Next Free Record : 43
You can also run with the --verbose / -v flag to get a detailed, perfectly aligned breakdown of KWH categories present in the file:
just-cdb info path/to/database.cdb -v
Output:
... (CDB File Information) ...
Content Summary:
- Total Keys (KWH/KWL Pairs) : 14
- Unique Categories (KWH) : 3
Categories present in this file:
- KWH 0 : 1 key
- KWH 20 : 5 keys
- KWH 100 : 8 keys
2. List All Keys
List all primary category key pairs (KWH / KWL) inside the database directory:
just-cdb keys path/to/database.cdb
3. Extract Raw Records
Retrieve binary payloads for any specific Key Word High (KWH) and Key Word Low (KWL) pair:
just-cdb records path/to/database.cdb 20 0
Output:
Found 1_005 records for Key pair (20, 0)
Record #0 (12_345 bytes): payload=0x68656c6c6f20776f726c6421
You can also use the --raw flag to write the raw binary payloads of all matching records directly to stdout (e.g., to pipe them to another command or save directly to a file):
just-cdb records path/to/database.cdb 20 0 --raw > category_20.bin
4. Query with SQL
Query your CDB structures using robust SQL with custom formats (json, ndjson, markdown, ascii):
just-cdb query path/to/database.cdb "SELECT * FROM node WHERE id > 10" --format markdown
Output:
| id | type | x | y |
|----|------|-------|-------|
| 11 | 1 | 12.34 | 56.78 |
| 12 | 2 | 90.12 | 34.56 |
Python API Usage
Use just-cdb programmatically inside your Python apps:
from just_cdb import CDBFile, OutputFormat
# Open the CDB file (runs in lazy-loading mode by default)
with CDBFile("path/to/database.cdb") as cdb:
# 1. Fetch metadata
header = cdb.get_header()
print(f"Total pages: {header.total_pages}")
# 2. Get list of all key pairs (kwh, kwl)
all_keys = cdb.keys()
print(f"Available keys: {all_keys}")
# 3. Retrieve raw record bytes
records = cdb.get_records(kwh=20, kwl=0)
for rec in records:
print(f"Size: {rec.size} bytes, payload: {rec.payload}")
# 4. Query with SQL (loads referenced tables on demand!)
rows = cdb.query("SELECT * FROM node WHERE id > 10 LIMIT 3")
for row in rows:
print(row) # Raw dictionary format
# 5. Format and stream queries directly to standard output or a file
cdb.query_formatted("SELECT * FROM node", format=OutputFormat.Markdown)
Trademark Disclaimer
SOFiSTiK® is a registered trademark of SOFiSTiK AG. This project is entirely independent and is not affiliated with, sponsored, or endorsed by SOFiSTiK AG.
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 Distributions
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 just_cdb-0.2.0.tar.gz.
File metadata
- Download URL: just_cdb-0.2.0.tar.gz
- Upload date:
- Size: 215.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
818281250a2f28cd38fb369b50f50adcec24726317d8b62d5972bf97ab78ddc6
|
|
| MD5 |
2e1ebf2dcfd4b6db72beaf017a7a847a
|
|
| BLAKE2b-256 |
75139429e985bcc79db67c40d3924ee7c36d1b298fa89b139a7850a967d83e13
|
Provenance
The following attestation bundles were made for just_cdb-0.2.0.tar.gz:
Publisher:
release.yml on oberbichler/just-cdb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
just_cdb-0.2.0.tar.gz -
Subject digest:
818281250a2f28cd38fb369b50f50adcec24726317d8b62d5972bf97ab78ddc6 - Sigstore transparency entry: 1822603027
- Sigstore integration time:
-
Permalink:
oberbichler/just-cdb@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/oberbichler
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file just_cdb-0.2.0-cp312-abi3-win_amd64.whl.
File metadata
- Download URL: just_cdb-0.2.0-cp312-abi3-win_amd64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.12+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f7cc0e0460b63967dbf28b99b123f340dc9e04fc0262b727a184f567cf90c2a
|
|
| MD5 |
3ee6a2f0a4dac23cac3ac27a95272c63
|
|
| BLAKE2b-256 |
dd7642f452ad6556ec8aa93aae7b097893dfcf9f963a75ce7359e3d3064f0ef0
|
Provenance
The following attestation bundles were made for just_cdb-0.2.0-cp312-abi3-win_amd64.whl:
Publisher:
release.yml on oberbichler/just-cdb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
just_cdb-0.2.0-cp312-abi3-win_amd64.whl -
Subject digest:
3f7cc0e0460b63967dbf28b99b123f340dc9e04fc0262b727a184f567cf90c2a - Sigstore transparency entry: 1822603186
- Sigstore integration time:
-
Permalink:
oberbichler/just-cdb@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/oberbichler
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file just_cdb-0.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: just_cdb-0.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.3 MB
- Tags: CPython 3.12+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41a66ee3e41e96b0a17cd5164d37a1e1eade43448c659ad3c435f70ecef5a9fa
|
|
| MD5 |
df0b7e08bdf45229022936e749df9378
|
|
| BLAKE2b-256 |
21a970429fe6741e9e0bc18a175e8b80d6b7c660e1a97d12e873eb0b3efda35a
|
Provenance
The following attestation bundles were made for just_cdb-0.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on oberbichler/just-cdb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
just_cdb-0.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
41a66ee3e41e96b0a17cd5164d37a1e1eade43448c659ad3c435f70ecef5a9fa - Sigstore transparency entry: 1822603156
- Sigstore integration time:
-
Permalink:
oberbichler/just-cdb@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/oberbichler
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file just_cdb-0.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: just_cdb-0.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.12+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
780c3ceb055127063245c87397e9b95b2119a8ca10a27142d0daf22b94efb2f8
|
|
| MD5 |
244111aec24158903b934c8cbb8261ab
|
|
| BLAKE2b-256 |
2e6e4f5983947e403f662c7f4f55704fb120aae8ae9da153cdd6d0bbdc7e458d
|
Provenance
The following attestation bundles were made for just_cdb-0.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on oberbichler/just-cdb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
just_cdb-0.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
780c3ceb055127063245c87397e9b95b2119a8ca10a27142d0daf22b94efb2f8 - Sigstore transparency entry: 1822603062
- Sigstore integration time:
-
Permalink:
oberbichler/just-cdb@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/oberbichler
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file just_cdb-0.2.0-cp312-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: just_cdb-0.2.0-cp312-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.12+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
690f3caef29e45f4bc6170e135a93769d1b2ce1e293f664bc2a8729c77d632a5
|
|
| MD5 |
5867dc7e727e8a5ed0876e4ab04e30d3
|
|
| BLAKE2b-256 |
b4d302cf958f5875eabd286510f9b78d10980d3fc125dd1ce178e65ed90cd977
|
Provenance
The following attestation bundles were made for just_cdb-0.2.0-cp312-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on oberbichler/just-cdb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
just_cdb-0.2.0-cp312-abi3-macosx_11_0_arm64.whl -
Subject digest:
690f3caef29e45f4bc6170e135a93769d1b2ce1e293f664bc2a8729c77d632a5 - Sigstore transparency entry: 1822603108
- Sigstore integration time:
-
Permalink:
oberbichler/just-cdb@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/oberbichler
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file just_cdb-0.2.0-cp312-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: just_cdb-0.2.0-cp312-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.12+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c04c0995615c73a4a88b68a8378df0f34c0454a390c5c80b3c3e8597567f239
|
|
| MD5 |
850b01bfb62a7694f62fd50ed5294530
|
|
| BLAKE2b-256 |
8c5e381c40abed1b9c8f290d3ae912ab1e74e2bae3adef3f9551c745970d0f09
|
Provenance
The following attestation bundles were made for just_cdb-0.2.0-cp312-abi3-macosx_10_12_x86_64.whl:
Publisher:
release.yml on oberbichler/just-cdb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
just_cdb-0.2.0-cp312-abi3-macosx_10_12_x86_64.whl -
Subject digest:
9c04c0995615c73a4a88b68a8378df0f34c0454a390c5c80b3c3e8597567f239 - Sigstore transparency entry: 1822603235
- Sigstore integration time:
-
Permalink:
oberbichler/just-cdb@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/oberbichler
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c63bcb1f2168aa61ff53d336236483a353249cc1 -
Trigger Event:
workflow_dispatch
-
Statement type: