Skip to main content

A simple redis ORM

Project description

RedORM

A simple Redis ORM that only a madman would use in production.
The red in RedORM both means Redis as well as the color red, as red is the fastest colour!

Quick Start

To install pip install redorm

from dataclasses import dataclass
from redorm import RedormBase, one_to_one, one_to_many, many_to_one, many_to_many


@dataclass
class Person(RedormBase):
    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(RedormBase):
    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


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.6.0.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

redorm-0.6.0-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file redorm-0.6.0.tar.gz.

File metadata

  • Download URL: redorm-0.6.0.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 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

Hashes for redorm-0.6.0.tar.gz
Algorithm Hash digest
SHA256 d0919d04d00482ad2f5addf6a2996ed4cff2537ebe4ff8931b464665396cca77
MD5 cd57e1c6eaf162c1662c595752b0d297
BLAKE2b-256 8af2f164a4f6c30bf7a318999ad134bfab89aff14fd3cf1ec9a43c943bf1ceef

See more details on using hashes here.

File details

Details for the file redorm-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: redorm-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 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

Hashes for redorm-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2847196ef4dbb2eb73677e33f88508c7b248f4f1b5be131fc16f1dea23a326b6
MD5 cbdf5f4ae96ef2f849274b3118c6c801
BLAKE2b-256 dcb5ea8264ff0a551e72e9974b304deafa1600e68568ecf7ab2ad33f41c55a89

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