Skip to main content

High-performance CDB reader for SOFiSTiK® databases with SQL query interface

Project description

just-cdb logo

A high-performance, completely self-contained CDB reader for SOFiSTiK® databases with a built-in SQL query engine.

PyPI Version Supported Python Versions Rust Edition License

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

just_cdb-0.2.0.tar.gz (215.4 kB view details)

Uploaded Source

Built Distributions

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

just_cdb-0.2.0-cp312-abi3-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.12+Windows x86-64

just_cdb-0.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ x86-64

just_cdb-0.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ ARM64

just_cdb-0.2.0-cp312-abi3-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

just_cdb-0.2.0-cp312-abi3-macosx_10_12_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12+macOS 10.12+ x86-64

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

Hashes for just_cdb-0.2.0.tar.gz
Algorithm Hash digest
SHA256 818281250a2f28cd38fb369b50f50adcec24726317d8b62d5972bf97ab78ddc6
MD5 2e1ebf2dcfd4b6db72beaf017a7a847a
BLAKE2b-256 75139429e985bcc79db67c40d3924ee7c36d1b298fa89b139a7850a967d83e13

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_cdb-0.2.0.tar.gz:

Publisher: release.yml on oberbichler/just-cdb

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

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

Hashes for just_cdb-0.2.0-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 3f7cc0e0460b63967dbf28b99b123f340dc9e04fc0262b727a184f567cf90c2a
MD5 3ee6a2f0a4dac23cac3ac27a95272c63
BLAKE2b-256 dd7642f452ad6556ec8aa93aae7b097893dfcf9f963a75ce7359e3d3064f0ef0

See more details on using hashes here.

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

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

File details

Details for the file just_cdb-0.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for just_cdb-0.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 41a66ee3e41e96b0a17cd5164d37a1e1eade43448c659ad3c435f70ecef5a9fa
MD5 df0b7e08bdf45229022936e749df9378
BLAKE2b-256 21a970429fe6741e9e0bc18a175e8b80d6b7c660e1a97d12e873eb0b3efda35a

See more details on using hashes here.

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

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

File details

Details for the file just_cdb-0.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for just_cdb-0.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 780c3ceb055127063245c87397e9b95b2119a8ca10a27142d0daf22b94efb2f8
MD5 244111aec24158903b934c8cbb8261ab
BLAKE2b-256 2e6e4f5983947e403f662c7f4f55704fb120aae8ae9da153cdd6d0bbdc7e458d

See more details on using hashes here.

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

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

File details

Details for the file just_cdb-0.2.0-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for just_cdb-0.2.0-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 690f3caef29e45f4bc6170e135a93769d1b2ce1e293f664bc2a8729c77d632a5
MD5 5867dc7e727e8a5ed0876e4ab04e30d3
BLAKE2b-256 b4d302cf958f5875eabd286510f9b78d10980d3fc125dd1ce178e65ed90cd977

See more details on using hashes here.

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

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

File details

Details for the file just_cdb-0.2.0-cp312-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for just_cdb-0.2.0-cp312-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9c04c0995615c73a4a88b68a8378df0f34c0454a390c5c80b3c3e8597567f239
MD5 850b01bfb62a7694f62fd50ed5294530
BLAKE2b-256 8c5e381c40abed1b9c8f290d3ae912ab1e74e2bae3adef3f9551c745970d0f09

See more details on using hashes here.

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

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