【发布时间】:2018-07-19 19:42:49
【问题描述】:
我有一个关于在动态变化的关系数据上使用 ORM(特别是 Peewee)的基本概念问题。
Peewee 将信息从数据库映射到 Python 对象以便于使用。
我的理解是查询在查询时生成 Python 对象。然后应该以某种方式更改数据库数据(在我的情况下是通过另一个线程)生成的对象的属性现在已经过时了,对吗?
我的核心问题是我的应用程序在结构上是非常异步的——Web 应用程序提供前端(通过 Flask)、硬件传感器输入数据,并且运行的守护程序根据我的数据库内容确定要采取的操作。因此,我必须不断手动重新查询,以便我的 Python 对象正确表示数据库中的数据,例如:
name = 'obj_name'
instance = Model.select().where(Model.name = name)
#time passes, need to refresh
instance = Model.get(Model.id == instance.id)
有什么方法可以让它更优雅吗?
理想情况下,每次访问 Peewee 对象时,我都会自动重新查询数据库。
或者,我可以添加一个更新对象的 refresh() 方法,例如:
instance = instance.refresh()
有什么建议吗?
在这种情况下使用 ORM 最简洁的方法是什么?
【问题讨论】:
-
你是使用 ORM 来更新行还是仅仅使用它来查询数据库?
-
两者——无论好坏,我的所有数据都通过 ORM 进入数据库。