未提供项目说明

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使用路径:

^{pr2}$

示例

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

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

推荐PyPI第三方库


热门话题
java如何在数据库中存储工作日数据以及开始时间和结束时间?   mysql Java JPA内部联接查询不起作用   java MQ消息在不同的客户端应用程序中显示不同   javascript如何在xPage上提高typeAhead性能?   java在尝试保存EditText时无法暂停   mongodb“未能使用带参数的构造函数NO_构造函数实例化java.util.List”,   java如何修改使IllegalArgumentException:列“\u id”不存在的游标   转换Android。网Uri到Java。伊奥。输入流   java NetBeans RCP居中弹出窗口无法按预期工作   java将sql开发人员与netbeans连接起来   带有xmldsig签名的java JAXB编组   java ORACLE JDBC批处理执行不会返回受影响行的实际计数   java无法理解如何在由swagger自动生成的jaxrs服务器中访问请求头   java如何处理漏洞CVE20181258,同时将Spring安全版本5与外部客户端(最新版本)一起使用?   JavaSpring数据JPA存储库多租户单模式技术