Skip to main content

RelaTable

A relational database -like table of rows.

Supports foreign key -style referencing to an another RelaTable or other containers.

An Example

from relatable import RelaTable

colors = ["red", "blue", "green"]
pet_names = {"dog": "Musti", "cat": "Mirri"}

persons = RelaTable(
    primary_key_column="id",
    foreign_keys={"color": colors},
    rows=[
        {"id": 123, "name": "Jaakko", "color": 0},
        {"id": 456, "name": "Teppo", "color": 1},
    ],
)

# Insert new user in the middle of the table
persons.insert(1, {"id": 789, "name": "Seppo", "color": 2})

pets = RelaTable(
    # No primary key defined => index is used
    foreign_keys={"name": pet_names, "owner": persons},
    rows=[
        {"name": "cat", "owner": 123},  # index 0
        {"name": "dog", "owner": 456},  # index 1
    ],
)

print(persons)
# Prints out:
#   [{'id': 123, 'name': 'Jaakko', 'color': 'red'},
#    {'id': 789, 'name': 'Seppo', 'color': 'green'},
#    {'id': 456, 'name': 'Teppo', 'color': 'blue'}]

print(pets)
# Prints out:
#   [{'name': 'Mirri', 'owner': {'id': 123, 'name': 'Jaakko', 'color': 'red'}},
#    {'name': 'Musti', 'owner': {'id': 456, 'name': 'Teppo', 'color': 'blue'}}]

print(persons[789].name)
# Prints out:
#   Seppo

print(pets[0].owner.color)
# Prints out:
#   red

print(pets[0].data())
# Prints out the non-expanded row data:
#   {'name': 'cat', 'owner': 123}

Release files for talamus-relatable 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for talamus-relatable 1.0.2
File Size Uploaded
talamus_relatable-1.0.2.tar.gz 5.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for talamus-relatable 1.0.2
File Interpreter ABI Platform
talamus_relatable-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 12.3 kB

Release files / talamus_relatable-1.0.2.tar.gz

Download URL talamus_relatable-1.0.2.tar.gz
Size 5.7 kB
Tags Source
SHA-256 checksum
How to use checksums
2c7e16fd9beb684f7612a5679a2a2445152e0b55287542c3d12ff0f2e7a71674
BLAKE2b-256 checksum
How to use checksums
5ebdacf3803aaa4f6aae690ea65ee09d49d1a9bd1023efd04f479807d2de8636
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.2 CPython/3.11.0 Linux/5.15.0-1022-azure

Release files / talamus_relatable-1.0.2-py3-none-any.whl

Download URL talamus_relatable-1.0.2-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9f0c1d8ffb50ae1933d33574ae48edf22b8ecf9dac4c88723895e2f151cf8b32
BLAKE2b-256 checksum
How to use checksums
ace1fe34d933bcf1a4e8100351502c0533171fca92658e626f366514a17aefb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.2 CPython/3.11.0 Linux/5.15.0-1022-azure

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page