【发布时间】:2021-06-15 05:31:56
【问题描述】:
我在我的烧瓶应用程序中使用 flask-sqlalchemy orm,它是关于智能家居传感器和演员的(为了简单起见,我们称它们为 Nodes。
现在我想存储一个绑定到Nodes 的Event,以检查它们的状态和其他或相同的Nodes,如果状态,则应使用给定值设置第一个已经达到阈值。
此外,可以从Groups 或Scenes 检查或设置状态。所以我有三个不同的外键要检查,另外三个要设置。每个类型都可以有多个类型,每个Event 可以有多个类型。
这是一个带有db.Models 的示例代码和我希望存储在Event 中的伪代码:
db = SQLAlchemy()
class Node(db.Model):
id = db.Column(db.Integer, primary_key=True)
value = db.Column(db.String(20))
# columns snipped out
class Group(db.Model):
id = db.Column(db.Integer, primary_key=True)
value = db.Column(db.String(20))
# columns snipped out
class Scene(db.Model):
id = db.Column(db.Integer, primary_key=True)
value = db.Column(db.String(20))
# columns snipped out
class Event(db.Model):
id = db.Column(db.Integer, primary_key=True)
# The following columns may be in a intermediate table
# but I have no clue how to design that under these conditions
constraints = # list of foreignkeys from diffrent tables (Node/Group/Scene)
# with threshold per key
target = # list of foreignkeys from diffrent tables (Node/Group/Scene)
# with target values per key
最后我希望能够检查我的任何Events 是否为真,以相应地设置绑定Node/Group/Scene。
这可能是数据库设计问题(而不是sqlalchemy)但我想在这里利用sqla orm的优势。
受this 和that 答案的启发,我试图深入挖掘,但关于 SO 的其他问题是关于更具体的问题或一对多关系。
非常感谢任何提示或设计技巧。谢谢!
【问题讨论】:
标签: database sqlalchemy flask-sqlalchemy