Firestore ORM for python.
Project description
FireORM
The easiest way to use Firestore with python.
Instalation
pip install fireorm
Example
from fireorm.Models import Model
from fireorm.Fields import TextField
class Salesman(Model):
name = TextField()
company = TextField()
s = Salesman()
s.name = 'Jim'
s.save()
# Get Salesman
s = Salesman.collection.get(s.id)
print(s.name) # Jim
Fields
There are 9 types of builtin fields, consistant with Firestore: BooleanField
, DateField
, ListField
, MapField
, NullField
, ReferenceField
, TextField
, and NestedModel
(which we'll get in a bit).
Each field takes the optional parameters default
and required
. If the field is not set, it will default to the value of default
. If there is no default
, the field is not set, and required == True
, an Exception
will be raised.
Fields Example
class Manager(Model):
name = TextField(required=True)
age = NumberField(required=True)
company = TextField(required=True, default='Dunder Mifflin')
startedWorkingAt = DateField()
m = Manager(name='Michael Scott') # you can pass in fields or set them later
m.age = 45
m.save() # Success! New doc in collection "manager" as: { name: Michael Scott, age: 45, company: Dunder Mifflin }
m = Manager()
m.name = 'Dwight Schrute'
m.save() # Exception since age is required but not given
You can also add a NestedModel which lets you add a defined class as a Field.
NestedModel Example
class Dog(Model):
age = NumberField()
owner = Manager(required=True)
dog = Dog()
dog.age = 3
dog.owner = Manager(name='Robert California', age=59)
dog.save()
Collections
The collection name for a class defaults to the class' name in lowercase. To set the collection name, use the Meta
class. You can also specify which fields print when printing the class.
Meta Example
class Student(Model):
name = TextField()
school = TextField(required=True, default='UPenn')
class Meta:
collection_name = 'students'
fields_to_print = ['name']
s = Student(name='Amy Gutman')
s.save() # creates a new document in the "students" collection
print(s) # <*Student* key: students/9AJ5DeSvzfD04uqyhhpL, id: 9AJ5DeSvzfD04uqyhhpL, name: Amy Gutman>
You can also inheret classes.
Inheritance Example
class ExchangeStudent(Student):
originalCountry = TextField(required=True)
class Meta:
collection_name = 'exchangeStudents'
fields_to_print = None # when this is None or does not exist, it prints all fields. When it is [] it only prints the defaults (key and id).
e = ExchangeStudent(originalCountry='UK')
print(e.school) # UPenn
e.save()
print(e) # <*ExchangeStudent* key: exchangeStudents/XbGdMjo9x9166MvZ79Zr, id: XbGdMjo9x9166MvZ79Zr, name: None, originalCountry: UK, school: UPenn>
Queries
You can make queries with the same syntax you would using the Python firebase-admin SDK. But FireORM returns the objects.
Queries Example
managers = Manager.collection.where('name', '==', 'Michael Scott').limit(1).stream()
print(managers) # [<*Manager* key: manager/Z8S75KU2n7QQnIm2cExy, id: Z8S75KU2n7QQnIm2cExy, age: 45, company: Dunder Mifflin, name: Michael Scott, startedWorkingAt: None>]
manager = Manager.collection.get('Z8S75KU2n7QQnIm2cExy')
print(manager) # <*Manager* key: manager/Z8S75KU2n7QQnIm2cExy, id: Z8S75KU2n7QQnIm2cExy, age: 45, company: Dunder Mifflin, name: Michael Scott, startedWorkingAt: None>
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
File details
Details for the file fireorm-0.0.14.tar.gz
.
File metadata
- Download URL: fireorm-0.0.14.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4cae6f7c2de22c9f78dd084f4b4fc380af49316e67415de736dd82b409b0b241 |
|
MD5 | d8863ff207dc97c142d4a1ca99b47887 |
|
BLAKE2b-256 | 7f60101657a9ee3853cde128309729592c5efb24d89fc7f7f20084eace665bb6 |
File details
Details for the file fireorm-0.0.14-py3-none-any.whl
.
File metadata
- Download URL: fireorm-0.0.14-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1bf81ec0b5943deb37a742704054ce1a4f2276563120502b7ae7d2fb267ab97 |
|
MD5 | 2e393c4d2fd444d22a59ad7bc994ac00 |
|
BLAKE2b-256 | 6f0bb01307856b1a6c5dfd7cf15ac80da9c2281be00707d89d2fc381d6c48f51 |