我在 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)
这是一个连接表继承。问题是当我查询用户时:
self.session.query(User).all()
我得到的只是来自客户的记录,而我想要的是没有客户的所有用户记录。我该如何解决这个问题?
编辑:我正在使用 SQLAlchemy 0.7.4 和 Pyramid 1.3a3
最佳答案
session.query(User)
不会根据 type
列的值执行任何过滤。
但是,它生成的 SQL SELECT
语句仅从 users
表中选择数据(除非使用了 with_polymorphic(...)
)。
但是您可以显式地添加过滤器
来获得想要的结果:
session.query(User).filter(User.type=='user').all()
关于python - SQLAlchemy 多态加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8744849/