SQLAlchemy中的复杂过滤器-如何?
属性和属性值是一对多,属性/属性值对和项是多对多。 此设计允许一个项目可以附加多个属性。现在,我们要选择所有具有选定属性AttributeValue的项目 我们希望选择所有具有特殊AttributeName/值对的项目。 无论如何,要在炼金术中做到这一点SQLAlchemy中的复杂过滤器-如何?,sqlalchemy,Sqlalchemy,属性和属性值是一对多,属性/属性值对和项是多对多。 此设计允许一个项目可以附加多个属性。现在,我们要选择所有具有选定属性AttributeValue的项目 我们希望选择所有具有特殊AttributeName/值对的项目。 无论如何,要在炼金术中做到这一点 class AttributeSchema(Base, DBBase): __tablename__ = 'attributeschemas' id = Column(Integer, primary_key=True)
class AttributeSchema(Base, DBBase):
__tablename__ = 'attributeschemas'
id = Column(Integer, primary_key=True)
name = Column(String(length=255))
type = Column(Enum('Boolean', 'Integer', 'String'), default='String')
is_index = Column(Boolean, default=False)
class AttributeValueSchema(Base, DBBase):
__tablename__ = 'attributevalueschemas'
id = Column(Integer, primary_key=True)
value = Column(String(length=255))
attributeschema_id = Column(Integer, ForeignKey('attributeschemas.id'), nullable=True)
attributeschema = relationship('AttributeSchema', backref='attributeschemavalues')
class ItemType(Base, DBBase):
__tablename__ = 'itemtypes'
id = Column(Integer, primary_key=True)
name = Column(String(length=255))
market_price = Column(Float)
attributes = relationship('AttributeSchema')
class ItemTypeAttribute(Base, DBBase):
__tablename__ = 'itemtype_attribute'
itemtype_id = Column(Integer, ForeignKey('itemtypes.id'), primary_key=True)
attribute_id = Column(Integer, ForeignKey('attributeschemas.id'), primary_key=True)
attributevalue_id = Column(Integer, ForeignKey('attributevalueschemas.id'), primary_key=True)
itemtype = relationship('ItemType')
attribute = relationship('AttributeSchema')
attributevalue = relationship('AttributeValueSchema')
看起来您的数据库架构不完整。哪个表存储项目的属性值?我已经用代码修改了我的原始帖子。