首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的查询对象没有被执行,而仍然是一个查询对象?

为什么我的查询对象没有被执行,而仍然是一个查询对象?
EN

Stack Overflow用户
提问于 2016-11-15 20:17:22
回答 1查看 54关注 0票数 0

我正在为一些简单的论坛创建一个api,使用金字塔和sqlalchemy。我有一个视图,当用户滚动到页面末尾时,我想简单地将一些json形式的帖子返回给客户端。由于某些原因,查询甚至没有运行,我将被返回一个查询对象,而不是一个rowproxy对象。这只是一个测试查询--顺便说一句,我只是从数据库中得到了几次,并试图在json中发送它们。

代码语言:javascript
复制
@view_config(route_name='get-posts', renderer='json')
def get-posts(request)
    q = session.query(Topic).filter(Topic.name =='gaming')\
    .order_by(desc(Topic.topic_date)).limit(10)
    results = [dict(zip(row.keys()) for row in q)]
    return {'posts' : results} 

当它运行时,我得到"AttributeError:‘主题’对象没有attribtue键“,在检查q的类型时,我发现它是type:sqlalchemy.orm.query.Query的

有人知道为什么没有运行查询吗?我有一个非api视图函数,我做的事情实际上是一样的,并返回结果(一个行代理作为字典的内容,它工作.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-15 22:29:28

这是故意的。查询上有导致执行基础查询的方法。所有()、一()、一()等。

如果需要将查询对象作为列表,请调用其上的所有():

代码语言:javascript
复制
@view_config(route_name='get-posts', renderer='json')
def get-posts(request)
    q = session.query(Topic).filter(Topic.name =='gaming')\
    .order_by(desc(Topic.topic_date)).limit(10)
    return {'posts' : q.all()} 

查询对象的引用:http://docs.sqlalchemy.org/en/latest/orm/query.html#the-query-object

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40618922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档