智能对象

smartobject的Python项目详细描述


智能对象

SmartObject是一个很容易 使用API命令操作对象属性,存储和同步 对象数据。在

SmartObject旨在快速构建物联网应用程序,但可用于 任何其他需要结合本地和分布式对象的应用程序 通过外部API调用自动存储和更改对象属性 正在验证传入数据。在

映射对象属性(称为属性)可以自动验证, 保存、加载、序列化并与外部服务同步。在

SmartObject看起来像ORM,但它与ORM不同:对象属性可以 储存在不同类型的仓库中,并组合成一个 数据对象。在

SmartObject为文件(JSON、YAML、MessagePack和 CBOR)和数据库:通过SQLAlchemy(可以存储对象)和Redis(can)的RDBMS 仅处理外部属性)。在

属性值将自动处理、验证并与 外部服务(如需要)。在

注意:所有SmartObject方法都是线程安全的(至少应该是:)

示例:

你有一个有心率传感器的小组。每个人的数据 heartbeat存储在本地JSON文件中,heartbeat存储在Redis数据库中。如何 用SmartObject实现这一点?只有几行代码:

importsmartobjectclassPerson(smartobject.SmartObject):def__init__(self,name):self.name=nameself.load_property_map('person.yml')self.apply_property_map()smartobject.config.storage_dir='data'smartobject.define_storage(smartobject.JSONStorage())smartobject.define_storage(smartobject.RedisStorage(),'r1')people=smartobject.SmartObjectFactory(Person)# create objects with factorypeople.create(name='John')people.create(name='Jane')# create object manuallyjack=Person('Jack')# you can set a single proppeople.set_prop('John','sex','male')people.set_prop('Jane','sex','female')# or multiple props with dict# heartbeat value is automatically written to Redisjack.set_prop({'sex':'male','heartbeat':100})# print object info (name and sex only)frompprintimportpprintpprint(people.serialize('Jane',mode='info'))people.save()jack.save()# clear Jack's sexjack.set_prop('sex',None)# load it backjack.load()# add Jack to factorypeople.create(obj=jack)# heartbeat value is automatically read from Redisprint('Heartbeat of Jack is: {}'.format(people.get('Jack').heartbeat))

文件人.ymlPerson对象的属性映射。它可以 从外部YAML文件加载或直接指定,如Python dict

上例的地图如下所示:

^{pr2}$

很简单,不是吗?你定义一个映射,SmartObject就可以完成任务了!在

安装

pip3 install smartobject

文件

完整的文档可在https://smartobject.readthedocs.io/

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

推荐PyPI第三方库


热门话题
java什么是jar文件包含com。谷歌。应用程序编程接口。服务。样品。youtube。cmdline。Auth和com。谷歌。常见的收集列表   java Ctrl掩码从鼠标事件传递到执行的操作   解析使用率跟踪程序的Java属性文件中的用户名   java如何在JFreeChart中旋转数字轴域上的记号标签?   Java中的多线程线程和对象   java我可以从键盘上读取基于相同接口但不同类的N个不同几何图形吗?   java继承和组合混乱?   java j2ee代理正在阻止启动tomcat 7错误1067   Maven exec java。lang.ClassNotFoundException   java Libgdx:有没有一种简单的方法可以让文本在按钮的每个轴上居中?   java无法在hibernate 4中配置二级缓存。十、   图像如何在JAVA中将png二进制数据转换为bmp二进制数据?   java处理来自多个平面文件的海量数据,并根据需要转换为xml格式   java计数具有属性的项目数   java设计建议MSSQL DB记录的JSON解析和处理   如何在Java中比较两个列表,并根据每个组合打印结果?   java在windows中查找桌面上使用最少的图标/文件/文件夹   java清除XML文件,但只删除了一些行   在NDK上没有实现C++和java的Android实现   Java JInternalFrame dispose查找源代码