如何从查询中选择特定列。 例如,只有来自的照片的用户名和大小:
class User(Base):
__tablename__ = 'user'
user_id = Column(String, primary_key = True, unique = True)
real_name = Column(String, nullable = True)
class Photo(Base):
__tablename__ = 'photo'
url = Column(String, primary_key = True, unique = True)
size = Column(Integer, nullable = False)
ts_taken = Column(DateTime, nullable = True)
user_id = Column(String, ForeignKey('user.user_id'))
user = relationship(User, backref='photos')
我可以使用:
s.query(Photo).join(User.photo).all()
或者,如果我想要一个特定用户的所有照片:
s.query(Photo).join(User.photo).filter(User.user_id == '1234').all()
但是如何让它只返回User.real_name和大小?
答案 0 :(得分:6)
在.query()
中指定要返回的内容。第一个映射列指示要从中查询的基表。
session.query(User.real_name, Photo.size).join(User.photos).all()
这会为您提供每张照片的[('name', 12)]
元组列表。
请简要考虑searching the documentation。它的作者非常彻底。