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第三方库


热门话题
JavaBeanio如何将抽象类或接口映射为记录或段   java Jboss 4.2.2到Jboss 7.1.1的迁移问题   如果Java运行时高于给定版本,则强制Maven失败   java在部署时持久化实体   java如何使用jdatechooser从mysql数据库中保存和检索空日期   java Google Drive SDK如何获取文件所在的文件夹?   java使用spring mvc mybatis从oracle db获取失败用户登录结果的数量   数组如何在java中拆分数字文件?   创建对象期间出现安卓 Java空指针异常   java 安卓supportv4。jar在Eclipse中未正确导入   java如何在javafx中创建这种类型的按钮   关于Spring集成和原型范围的java之谜   java正则表达式:在2个标记之间提取DNA信息   使用getText()时出现java空指针异常。toString()。修剪();   java如何从spring控制器获取angularjs中的模型属性值