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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for talamus_relatable-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f0c1d8ffb50ae1933d33574ae48edf22b8ecf9dac4c88723895e2f151cf8b32 |
|
MD5 | b652a0df692a8cbef4667b1d838966cc |
|
BLAKE2b-256 | ace1fe34d933bcf1a4e8100351502c0533171fca92658e626f366514a17aefb0 |