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

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.1.1.tar.gz (119.2 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.1.1-cp311-abi3-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.11+Windows x86-64

just_cdb-0.1.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

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

just_cdb-0.1.1-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ ARM64

just_cdb-0.1.1-cp311-abi3-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

just_cdb-0.1.1-cp311-abi3-macosx_10_12_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

Details for the file just_cdb-0.1.1.tar.gz.

File metadata

  • Download URL: just_cdb-0.1.1.tar.gz
  • Upload date:
  • Size: 119.2 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.1.1.tar.gz
Algorithm Hash digest
SHA256 57ac7dc7af787e028c81fea5cd12e4a8599f0673ee14fb5e2c6666c32b646708
MD5 7797dee891a24f3e3479de4e68fa5c5c
BLAKE2b-256 acae6b32efe618d1df5ba187feb346042a9b22243ed65e2a9d737803e57d5f4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_cdb-0.1.1.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.1.1-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: just_cdb-0.1.1-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.11+, 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.1.1-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 adb8370432ff30c8691f6bfbb4099a4b2608049b64b9ee12a322b42656b24f6d
MD5 19a5ae0fc6f32bb549eaa7f8d440413a
BLAKE2b-256 de14060edef118915cec958b2e0abc38938acc25fb434f8ff3b2d5c0f8a944de

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_cdb-0.1.1-cp311-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.1.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for just_cdb-0.1.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5aec0c2a6e3376507ef8a8dcfd9d2986ed62a618ccf82217c3ad915573d8f0c3
MD5 c99f4ea021ce6a61af2b6d9ef5b68f56
BLAKE2b-256 4001b527ea7269c61352403c3735cf37521bca587d9df845e9fd1e5589aadd15

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_cdb-0.1.1-cp311-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.1.1-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for just_cdb-0.1.1-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c8ec208c71bd0111904576b2393e9a41ea1038ac2f532480c7d2c9416a95dcdb
MD5 8b94653e39e58b9fced35af27ff87ef9
BLAKE2b-256 3056c3583cf3b4e59595a070f593bd72c48e5ce46d0184a47c3a24380815489c

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_cdb-0.1.1-cp311-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.1.1-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for just_cdb-0.1.1-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb376d17bfc853503785e998decd7827ce2a92249531fd4e35b6db4f3070f610
MD5 ca71f9980e6b1e429fc851fa42c7f976
BLAKE2b-256 25784667b220f1c9cb8c64eb14340fc701f7fb6a8d78798929d4900f825f2052

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_cdb-0.1.1-cp311-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.1.1-cp311-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for just_cdb-0.1.1-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f5505c6a9fdee8e4ece91d2fe008af0738da09b84087c7d3396b1fd6bf78fa4e
MD5 c4a56d983b60420e2d13ea93d3e79459
BLAKE2b-256 966d2d289b283bfdfe29847d6bf11bef9e3ee03bdc039820b7ca6f85a32d4142

See more details on using hashes here.

Provenance

The following attestation bundles were made for just_cdb-0.1.1-cp311-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