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.1.tar.gz
(5.3 kB
view details)
Built Distribution
File details
Details for the file redorm-0.1.1.tar.gz
.
File metadata
- Download URL: redorm-0.1.1.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13f80a7cc3582e37c80e87a7cede9d6e58ecb2a1d02884ffd5af43c9449fdd85 |
|
MD5 | 4cab182ffc384549d8574d8754a284b3 |
|
BLAKE2b-256 | d31043b66be9593eceda8b107371719baa1b35641ceb6e8ee94f07586c881c2a |
File details
Details for the file redorm-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: redorm-0.1.1-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/41.2.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4d8e289c754e1a0e7fa5b876a6a77e879a7a3cd5abed85e879c16fae8de9f22 |
|
MD5 | 710ad046829ecd6dec59911880fbd1e4 |
|
BLAKE2b-256 | 9efd1cc62bd610e40ea24c5c5e2958bf46c498ef22e1aad6425e40fcf70eb609 |