【发布时间】:2017-03-02 18:44:18
【问题描述】:
我正在使用 Flask-SQLAlchemy==2.2 并且有这样的 STI (Single Table Inheritance) 配置:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Item(db.Model):
__tablename__ = 'item'
id = db.Column(db.Integer, primary_key=True)
info = db.Column(db.String(255))
type = db.Column(db.String())
__mapper_args__ = {
'polymorphic_on': type
}
class ItemA(Item):
__mapper_args__ = {
'polymorphic_identity': 'a'
}
class ItemB(Item):
__mapper_args__ = {
'polymorphic_identity': 'b'
}
class ItemC(Item):
__mapper_args__ = {
'polymorphic_identity': 'c'
}
我想查询特定种类的项目。我可以这样做:
Item.query.filter_by(type='b').all()
有没有机会像下面这样做?
ItemB.query.all()
谢谢。
【问题讨论】:
-
是的,应该可以的。
-
@univerio:不幸的是,它只返回所有对象(不是 type=='b')
-
逐字使用您的配置,呈现的 SQL 为
SELECT item.id AS item_id, item.info AS item_info, item.type AS item_type FROM item WHERE item.type IN (?)。 -
我对@987654327@有不同的输出
-
除了it works for me,我不知道该说什么。
标签: sql python-3.x sqlalchemy flask-sqlalchemy sti