在SQLAlchemy中查询和选择特定列

era*_*ran 3 sql sqlalchemy

如何从查询中选择特定列.例如,只有来自的照片的用户名和大小:

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')
Run Code Online (Sandbox Code Playgroud)

我可以用:

s.query(Photo).join(User.photo).all()
Run Code Online (Sandbox Code Playgroud)

或者,如果我想要一个特定用户的所有照片:

s.query(Photo).join(User.photo).filter(User.user_id == '1234').all()
Run Code Online (Sandbox Code Playgroud)

但是如何让它只返回User.real_name和大小?

dav*_*ism 7

指定要返回的内容.query().第一个映射列指示要查询的基表.

session.query(User.real_name, Photo.size).join(User.photos).all()
Run Code Online (Sandbox Code Playgroud)

这将为您[('name', 12)]提供每张照片的元组列表.

请考虑简要搜索文档.它的作者非常透彻.