Skip to main content

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

Project description

just_cdb

PyPI Version Supported Python Versions Rust Edition License

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

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

Uploaded CPython 3.11+Windows x86-64

just_cdb-0.1.0-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.0-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.0-cp311-abi3-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

just_cdb-0.1.0-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.0.tar.gz.

File metadata

  • Download URL: just_cdb-0.1.0.tar.gz
  • Upload date:
  • Size: 114.8 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.0.tar.gz
Algorithm Hash digest
SHA256 22b6c853496cc598219e065b5cfabf81caf1130a6c69ccb9f98dc9ed4ea914b1
MD5 cf60eee9dd217f93febf05f0c94f46b1
BLAKE2b-256 43ab9e73b694580f22be4e5d0ccb178100c1203024467922240c4fa0b7f23d93

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: just_cdb-0.1.0-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.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f510cc4e00bd9699e8459b8a67e7343bf49548fab0c4008ab7d0d3922c644669
MD5 3fc7e6403790c2c157d090c227489a58
BLAKE2b-256 0dbe395fa5a1081d5b52d709e022fc94a653891575b0abb47e069973de6ebcdd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for just_cdb-0.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5e85cf6b6b407d5351d045a808898c9fd8b6812da3282d950661a5daa7c1bb11
MD5 69446169e98a4f3cbc589a1ab1aae0a9
BLAKE2b-256 d13052db5c8ca73839e8445e9471fd59ce3c0f8051c6598ee01ecbe911524b12

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for just_cdb-0.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 549456860b5a146929e9bd5f6c742dc4733fe3d3312ce21c6661927dda83f59e
MD5 f788235ce9021f26e9215635247b991d
BLAKE2b-256 cecc9ac9bbe42d37fcedb3716480686129ef1a9123db092483036c633f43bf1c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for just_cdb-0.1.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e8d4fc9a568a521c3cff0e4aea78863317fb8be785473c8782b380b123f76c32
MD5 0f3d67de97508f1d782cef38e07d1cb1
BLAKE2b-256 962ca5cf64f8a730f27665cfa1b6671bd7afa98827f3c05cb0bb70bdec92756f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for just_cdb-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e81f468e0c28f82e851e038040e5cca1285e5f0544c0b5a40a64264859c97194
MD5 bd0d7b973d64542f4b92255801b3380e
BLAKE2b-256 2c5fc858d01146da6932a3094caa9ef18d343b01e4db1415d8d5e77fa7125898

See more details on using hashes here.

Provenance

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