python的Firestore ORM。
fireorm的Python项目详细描述
萤火虫
在python中使用Firestore的最简单方法。在
安装
pip install fireorm
示例
^{pr2}$字段
有9种类型的内置字段,与Firestore一致:BooleanField
,DateField
,ListField
,MapField
,NullField
,ReferenceField
,TextField
,和NestedModel
(我们稍后会介绍)。在
每个字段接受可选参数default
和required
。如果未设置该字段,它将默认为default
的值。如果没有default
,则不设置该字段,并且required == True
,将引发一个Exception
。在
字段示例
classManager(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 laterm.age=45m.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
您还可以添加一个NestedModel,该模型允许您将已定义的类添加为字段。在
嵌套模型示例
classDog(Model):age=NumberField()owner=Manager(required=True)dog=Dog()dog.age=3dog.owner=Manager(name='Robert California',age=59)dog.save()
收藏
类的集合名称默认为小写的类名称。要设置集合名称,请使用Meta
类。还可以指定打印类时打印哪些字段。在
元示例
classStudent(Model):name=TextField()school=TextField(required=True,default='UPenn')classMeta:collection_name='students'fields_to_print=['name']s=Student(name='Amy Gutman')s.save()# creates a new document in the "students" collectionprint(s)# <*Student* key: students/9AJ5DeSvzfD04uqyhhpL, id: 9AJ5DeSvzfD04uqyhhpL, name: Amy Gutman>
你也可以内置类。在
继承示例
classExchangeStudent(Student):originalCountry=TextField(required=True)classMeta: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)# UPenne.save()print(e)# <*ExchangeStudent* key: exchangeStudents/XbGdMjo9x9166MvZ79Zr, id: XbGdMjo9x9166MvZ79Zr, name: None, originalCountry: UK, school: UPenn>
查询
您可以使用与使用pythonfirebase管理SDK相同的语法进行查询。但是FireORM返回了这些对象。在
查询示例
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>
- 项目
标签: