python的Firestore ORM。

fireorm的Python项目详细描述


萤火虫

在python中使用Firestore的最简单方法。在

安装

pip install fireorm

示例

^{pr2}$

字段

有9种类型的内置字段,与Firestore一致:BooleanFieldDateFieldListFieldMapFieldNullFieldReferenceFieldTextField,和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>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Facebook SDK如何正确覆盖onActivityResult()?   macos Java:与命令行应用程序通信   使用Spring引导和Java Web Start(JNLP)时出现异常   java自定义对象转换器JavaFx FXML   TestNG中数据参数化的java优化方法   java Android测验应用程序在更新分数时崩溃   java如何从角度正确地与servlet通信   获取java中当前窗口的位置   linux没有java中的pytorch_jni。图书馆路径   socket保持打开时的java打印缓冲区读取程序   java运行TestNG测试实例   java testng中是否有testFinished侦听器方法?   java将Android Studio升级到2.1.2,现在出现构建错误   Hibernate JPA2中的java空指针异常。0 joinMap   java HttpPost每5秒响应一次   java增加了@ElementCollection中元素的大小   具有PersistenceContext和LockType的java单例ejb。阅读   什么是多项式的次数f(n)=n/20