未提供项目说明
magicdb的Python项目详细描述
MagicDB公司
一个用于python的完整类型的Firestore ORM——存储数据的最简单方法。在
MagicDB源于Pydantic,因此您可以通过Firestore:https://pydantic-docs.helpmanual.io/的功能获得Pydantic模型的所有功能。在
安装
pip install magicdb
初始化数据库
MagicDB通过Firestore服务帐户json初始化,您可以从Firebase控制台下载该帐户。
一旦有了json,就必须告诉MagicDB它在哪里,要么1)将GOOGLE_APPLICATION_CREDENTIALS
环境变量设置为json路径,要么2)调用magicdb.connect使用路径:
示例
frommagicdb.ModelsimportMagicModelclassSalesman(MagicModel):name:str=Nonecompany:str=Nones=Salesman()s.name='Jim's.save()# Get Salesmans=Salesman.collection.get(s.id)print(s.name)# Jim
字段
使用mypy将接受的任何类型!在
字段示例
fromdatetimeimportdatetimeclassManager(MagicModel):name:strage:intcompany:str='Dunder Mifflin'startedWorkingAt:datetime=None# m = Manager(name='Michael Scott', age=44) # you must pass in the required fields on initializing the object.m.age=45m.save()# Success! New doc in collection "manager" as: { name: Michael Scott, age: 45, company: Dunder Mifflin }m=Manager(name='Dwight Schrute')# Exception since age is required but not given
也可以将其他对象添加为字段。在
嵌套模型示例
classDog(MagicModel):age:intowner:Managerdog=Dog()dog.age=3dog.owner=Manager(name='Robert California',age=59)dog.save()print(dog)
收藏
类的集合名称默认为小写的类名称。要设置集合名称,请使用Meta
类。在
元示例
classStudent(MagicModel):name:str=Noneschool:str='UPenn'classMeta:collection_name='students's=Student(name='Amy Gutman')s.save()# creates a new document in the "students" collectionprint(s)# name='Amy Gutman' school='UPenn'
你也可以内置类。在
继承示例
classExchangeStudent(Student):originalCountry:strclassMeta:collection_name='exchangeStudents'e=ExchangeStudent(originalCountry='UK')print(e.school)# UPenne.save()print(e)# name=None school='UPenn' originalCountry='UK'
查询
您可以使用与使用pythonfirebase管理SDK相同的语法进行查询。但是FireORM返回了这些对象。在
查询示例
e=ExchangeStudent(originalCountry='UK')print(e.school)# UPenne.save()print(e)# name=None school='UPenn' originalCountry='UK'managers=Manager.collection.where('name','==','Michael Scott').limit(1).stream()print(managers)# [Manager(name='Michael Scott', age=45, company='Dunder Mifflin', startedWorkingAt=None)]print(managers[0].id)manager=Manager.collection.get('0mIWZ8FfgQzBanCllqsV')print(manager)# name='Michael Scott' age=45 company='Dunder Mifflin' startedWorkingAt=None
- 项目
标签: