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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file talamus_relatable-1.0.2.tar.gz.

File metadata

  • Download URL: talamus_relatable-1.0.2.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.11.0 Linux/5.15.0-1022-azure

File hashes

Hashes for talamus_relatable-1.0.2.tar.gz
Algorithm Hash digest
SHA256 2c7e16fd9beb684f7612a5679a2a2445152e0b55287542c3d12ff0f2e7a71674
MD5 e23e617e071ad1975249907c950b37ee
BLAKE2b-256 5ebdacf3803aaa4f6aae690ea65ee09d49d1a9bd1023efd04f479807d2de8636

See more details on using hashes here.

File details

Details for the file talamus_relatable-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: talamus_relatable-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.11.0 Linux/5.15.0-1022-azure

File hashes

Hashes for talamus_relatable-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9f0c1d8ffb50ae1933d33574ae48edf22b8ecf9dac4c88723895e2f151cf8b32
MD5 b652a0df692a8cbef4667b1d838966cc
BLAKE2b-256 ace1fe34d933bcf1a4e8100351502c0533171fca92658e626f366514a17aefb0

See more details on using hashes here.

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