Python library to create databases
Project description
relationaldb
RelationalDB is a python ODM library for MongoDB that allows you to design collections like you do it for your normal dataclasses objects.
DISCLAMER
This library is in alpha-release, it's a work in progress for the moment, excellent libraries for MongoDB ODM in python exist:
There are a lot of none implemented main features (I implement them when I have time or when I need it for my project).
Quickstart
relationaldb wraps attrs
to create classes boilerplate and add few parameters.
One to Many relation
Let's say you want a simple one to many relations, with two entities: Animal and Person.
- Each animal can have one owner (Person)
- Each person can have 0 to many animals
from relationaldb import conception
# Object to design the architecture of the database
c = conception()
# Add collection woth 'define' like with attrs
@c.define
class Person:
# add new attribute with 'field' method
# in_filter_query parameter allows to use the 'db.Person.feed' method to upsert new documents
name: str = c.field(in_filter_query=True)
# all attrs.fields parameters are available
money: int = c.field(kw_only=True, default=0)
birth_year: int = c.field(kw_only=True, default=None)
@c.define
class Animal:
# We can reference
name: Person = c.field(in_filter_query=True)
owner: Person = c.field(kw_only=True, default=None)
birth_year: int = c.field(kw_only=True, default=None)
# Create a new mongodb named "mydb"
db = c.mongodb("relationaldb_mydb_01")
# Create second DB with same architecture
db2 = c.mongodb("relationaldb_mydb_02")
# Create a new person
db.Person.insert_one("John")
# Get the person
person = db.Person.first()
assert isinstance(person, Person)
assert person.name == "John"
for person in db.Person:
print(person)
# Upsert (create or update) person named 'Smith' if it does not exists (based on in_filter_query)
db.Person.feed("Smith") # will create the person
db.Person.feed("Smith") # will do nothing, person already exist
db.Person.feed("Smith", money=1000) # will update the person 'Smith'
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
relationaldb-0.1.1.tar.gz
(13.7 kB
view hashes)
Built Distribution
Close
Hashes for relationaldb-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b55567d844df07e560fdd95fc5e5598552dd344946042e0dbd99e5560385ff9d |
|
MD5 | 8afb99814ea92c6d8e12d5b8820a2797 |
|
BLAKE2b-256 | 938a7eee11bdd5f4a6ee43b83e5e5433f1821144d7c701aa9d2c14c19ab9b012 |