SQLAlchemy 多态加载
我在SQLAlchemy中有一个模型:
class User(Base):
__tablename = 'users'
id = Column(Integer, primary_key=True, autoincrement=True)
type = Column(Text, nullable=False)
user_name = Column(Text, unique=True, nullable=False)
__mapper_args__ = {'polymorphic_on': type}
class Client(User):
__tablename__ = 'clients'
__mapper_args__ = {'polymorphic_identity': 'client'}
id = Column(Integer, ForeignKey('users.id'), primary_key=True)
client_notes = Column(Text)
这是一个联合表继承的结构。问题是当我查询用户(User)时:
self.session.query(User).all()
我得到的全是客户(Client)的记录,而我想要的是所有用户的记录,不包括客户。这个问题我该怎么解决呢?
补充说明:我使用的是SQLAlchemy 0.7.4和Pyramid 1.3a3
1 个回答
2
session.query(User)
这个命令不会根据 type
列的值进行任何筛选。
不过,它生成的 SQL SELECT
语句只会从 users
表中选择数据(除非使用 with_polymorphic(...)
)。
但是,你可以明确地添加 filter
来达到你想要的结果:
session.query(User).filter(User.type=='user').all()