An offline-available ORM-like wrapper for Google Firestore Database
Firestore is an offline available ORM/ODM atop Google Firestore.
Workenvoy Inc (http://github.com/workenvoy)
Raymond Ortserga (http://github.com/rayattack)
Firestore is a Python Object-Document/Object-Collections Mapper for working with Google Firestore. The Flexible, Extremely Scalable, realtime database by Google. You can find some documentation at https://firestore.readthedocs.io - and there is also a quickstart tutorial.
Firestore currently uses an in-memory data store to simulate access to Google Firestore when working offline. There is an optimistic persistence to disk and the contents can be seen in the /projectdir/localfire directory. Deleting this directly means you lose all the data you might have saved prior to removing the directory from disk. Make sure to make a copy of this directory if you want to keep a copy of your data and you are encouraged to contribute i.e. open an issue, submit a pull request if you want to offer a helping hand.
We recommend the use of virtual environments e.g. virtualenv to control your package management. Installation of Firestore is easily done pip install -U firestore and requires pip. to be installed. Otherwise, you can download the source code from GitHub and run python setup.py install.
We tried to keep the dependencies to a minimum, and all dependencies are available using pip. The only dependencies you require to use Firestore are highlighted below:
If you are working with dates extensive we suggest you use a date parser:
Sample Firestore Code Snippet:
from firestore import Collection, Document, Reference as Ref from firestore import Array from firestore import Integer from firestore import String from firestore.lazy import Datatype class SomeRootCollection(Collection): """ Root collections inherit directly from collection, whilst sub collections will inherit from a document. To understand this always remember in Firestore a collection can never be a child of another collection, and a sub-collection will always live under a document. To have mongo style sub-collections use the Map datatype """ pass class User(SomeRootCollection): """ This is the User document and will be saved under the collection `SomeRootCollection`. Documents live under collections or sub-collections directly """ __private__ = ["password"] first_name = String(required=True) middle_name = Datatype(datatype="String") # You can use Datatype in place of more specific types last_name = Datatype("StrInG") # Case insensitive age = Integer(minimum=0) photos = Reference('Photo') password = String(minimum=6) # private fields can not be viewed with get_XXX methods class Photo(User): """ This creates a photos subcollection under the User document for documents under the root collection """ id = String(required=True, id=True) # omit to have id auto-generated by cloud firestore photo_urls = Array() # Create a text-based post >>> user = User() >>> user.first_name = "Alan" >>> user.last_name = "Turing" >>> user.photos.append("https://cloudinary.com/img.jpg") >>> >>> # this will persist user and photo at >>> # once unlike user.save that will save only user >>> user.persist() # Sometimes you want one thing to succeed before doing another >>> user.photos.safe_save() # only saves if parent was prior saved else fails >>> user.photos.save() # saves regardless # You can also save a photo by itself and query easily >>> photo = Photo() >>> photo.parent = user >>> photo.save() # save only photo >>> photo.parent.save()
We love contributors: Contribution guidelines
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for firestore-0.0.8-py3-none-any.whl