Skip to main content

A relational database -like table of rows.

Project description

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}

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

talamus_relatable-1.0.2.tar.gz (5.7 kB view hashes)

Uploaded Source

Built Distribution

talamus_relatable-1.0.2-py3-none-any.whl (6.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page