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>
Metadata
Release files for fireorm 0.0.14
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| fireorm-0.0.14.tar.gz | 11.6 kB | Without provenance | Details for fireorm-0.0.14.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| fireorm-0.0.14-py3-none-any.whl | Python 3 | none | any | Details for fireorm-0.0.14-py3-none-any.whl |
Total release size: 26.6 kB
Release files / fireorm-0.0.14.tar.gz
| Download URL | fireorm-0.0.14.tar.gz |
|---|---|
| Size | 11.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4cae6f7c2de22c9f78dd084f4b4fc380af49316e67415de736dd82b409b0b241
|
|
BLAKE2b-256 checksum How to use checksums |
7f60101657a9ee3853cde128309729592c5efb24d89fc7f7f20084eace665bb6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / fireorm-0.0.14-py3-none-any.whl
| Download URL | fireorm-0.0.14-py3-none-any.whl |
|---|---|
| Size | 15.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e1bf81ec0b5943deb37a742704054ce1a4f2276563120502b7ae7d2fb267ab97
|
|
BLAKE2b-256 checksum How to use checksums |
6f0bb01307856b1a6c5dfd7cf15ac80da9c2281be00707d89d2fc381d6c48f51
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Security for fireorm 0.0.14
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.