您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用SQLAlchemy仅选择一列?

如何使用SQLAlchemy仅选择一列?

一个Query对象接受实体查询作为位置参数,所以只是通过它User.id

user_id = session.query(User.id).\
        filter(User.validation == request.cookies.get("validation")).\
        scalar()

scalar()返回第一个结果的第一个元素;如果未找到任何行,则返回None。它为多行引发MultipleResultsFound异常。

load_only()表示仅应加载实体的给定基于列的属性,而其他所有期望标识的属性将被延迟。如果以后确实需要整个User模型对象,则可以采用这种方法在这种情况下,你的原始查询必须更改为:

user = session.query(User).\
        filter(User.validation == request.cookies.get("validation")).\
        options(load_only("id")).\
        one()

one()仅返回一个结果或引发异常(0个或多个1个结果)。如果你接受None“没有找到用户”作为有效的返回值,请使用one_or_none()。 请注意,谓词(WHERE子句的条件)不应Query作为实体传递给对象,而应与一起添加filter()

最重要的是,Flask中的视图期望你返回以下之一:

机器会将响应对象,字符串或元组以外的任何内容都视为WSGI应用程序。在你的原始代码中,Query由于缺少对scalar()此类的调用,你返回了一个对象,然后将该对象视为WSGI应用程序。

SQLServer 2022/1/1 18:19:52 有553人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶