我们在非常复杂的数据库中有这种模式,基本上可以归结为一个有向图,每个边上都有元数据。我们正在解决它,但我相信有一个“更好”的解决方案。我将试着用一个例子来描述这种情况。你知道吗
在这个例子中,我们对一些顶级对象类型的缺陷进行了编目。这些顶级对象类型是水果、汽车和人。缺陷也是顶级对象类型,但有两种类型:审美缺陷和结构缺陷。你知道吗
例如,一辆汽车可能既有美观缺陷,也有结构缺陷。重要的是,同样的结构缺陷可能同时存在于汽车和水果上。你知道吗
图中的所有顶级对象都有一个全局唯一id,该id映射到一个类型。我们将顶层表示称为“实体”。你知道吗
方括号表示表的主键
实体类型->;(无orm对象)
实体->;实体类型映射
对象表示为:
水果->;水果模型
汽车->;汽车模型
人物->;人物模型
缺陷以类似方式表示:
美学缺陷->;AesDefectModel(继承自BaseDefectModel)
结构缺陷->;StructDefectModel(从BaseDefectModel继承)
缺陷映射到实体,例如:
缺陷实体映射->;缺陷实体映射
我想说的是:
class FruitsModel(db.Model):
__tablename__ = "Fruits"
id = db.Column(db.BigInteger, db.ForeignKey("Entities.entity_id"))
# other cols, etc
def print_defects(self):
defects = self.defects
for d in defects:
print d
defects = db.relationship # <--- What goes here ??
为了得到一个水果的缺陷清单,我现在正在努力。对每个缺陷类型执行一个查询,然后在python中连接两个列表。你知道吗
建立关系的正确方法是什么?这种关系可以将所有缺陷作为基类(BaseDefectModel)或包含混合类型的列表(AesDefectModel和StructDefectModel)?如果不是关系,我可以用一个查询来完成吗?你知道吗
作为记录,SQLAlchemy比我所做的大多数机器学习都要复杂。你知道吗
答案是使用多态性继承,这是我刚刚才理解的。你知道吗
http://docs.sqlalchemy.org/en/rel_0_8/orm/inheritance.html
相关问题 更多 >
编程相关推荐