栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用SQLAlchemy仅选择一列?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用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中的视图期望你返回以下之一:

  • a valid response object
  • a string
  • a
    (response, status, headers)
    tuple
  • a WSGI application

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373334.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号