A simple redis ORM
Project description
Redorm
A simple Redis ORM that only a madman would use in production
Quick Start
To install pip install redorm
from dataclasses import dataclass
from redorm import RedisBase, one_to_one, one_to_many, many_to_one, many_to_many
@dataclass
class Person(RedisBase):
name: str
age: int
siblings = many_to_many(foreign_type="Person", backref="siblings")
dad = many_to_one(foreign_type="Person", backref="children")
children = one_to_many(foreign_type="Person", backref="dad")
favourite_color = one_to_one("Color", backref="liker")
@dataclass
class Color(RedisBase):
name: str
liker = one_to_one(Person, backref="favourite_color")
>>> red = Color.create(name="Red")
>>> homer = Person.create(name="Homer", age=50, favourite_color=red)
>>> print(repr(homer.favourite_color))
Color(id='dcb9aa50-554a-40a5-9acf-7d86c982e5ee', name='Red')
>>> print(repr(homer.children))
[]
>>> bart = Person.create(name="Bart", age=11, dad=homer)
>>> print(repr(homer.children))
[Person(id='424cd574-5382-4d34-89da-7233b3928405', name='Bart', age=11)]
>>> print(repr(bart.favourite_color))
None
>>> blue = Color.create(name="Blue", liker=bart)
>>> print(repr(bart.favourite_color))
Color(id='dc9df3c2-c592-4d87-a45e-f88a346342b4', name='Blue')
>>> print(repr(blue.liker))
Person(id='424cd574-5382-4d34-89da-7233b3928405', name='Bart', age=11)
>>> lisa = Person.create(name="Lisa", age=9, dad=homer.id, siblings=[bart])
>>> print(repr(homer.children))
[Person(id='205a459a-572c-41af-bae3-e6e730aada97', name='Lisa', age=9), Person(id='424cd574-5382-4d34-89da-7233b3928405', name='Bart', age=11)]
>>> bart.dad = None
>>> print(repr(homer.children))
[Person(id='205a459a-572c-41af-bae3-e6e730aada97', name='Lisa', age=9)]
Why Redorm?
- Thread Safe
- Very fast
- Super simple to use
- Very little boilerplate
Why not Redorm?
- Made in an afternoon
- Unlikely to be maintained
- Not thoroughly tested
- NOT THOROUGHLY TESTED
- Writing your own ORM is fantastic for learning, but you should not use it in prod
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
redorm-0.1.0.tar.gz
(6.6 kB
view details)
Built Distribution
File details
Details for the file redorm-0.1.0.tar.gz
.
File metadata
- Download URL: redorm-0.1.0.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2caead3a47bb8b24440d61e2a0016cc6f5f15d2079b3f51a1e2b7238f5b0ce0e |
|
MD5 | c380b06cee0b0a15742d4d8761eef59a |
|
BLAKE2b-256 | 8ebc3ee4ada6b5c2d2e160f435a7725b432c4ad48098a8e32cd6db08bae4d23b |
File details
Details for the file redorm-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: redorm-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5655179b2634c4e98872d2ebae3dbe8450e71e4e9b713109dc5923725422c04d |
|
MD5 | 59cd49f487ea5ecb448ea5c47bc88f52 |
|
BLAKE2b-256 | 4a338132076f68e8e2ff4932ea53b309fd5bf115faf39b452f817fad9da65cad |