如何将Sqlalchemy结果作为JSON返回?

时间:2012-07-13 10:35:43

标签: jquery python sqlalchemy pylons

Sqlalchemy结果可以包含0到多条记录。

结果是:

record = meta.Session.query(model.EmpsTable).filter(model.EmpsTable
         .firstname.like(searchQuery))

如果只有一条记录要返回,我会这样做:

return {'file_id':record.file_id, 'filename':
         record.filename, 'links_to' :record.url}

我可以在终端上打印记录,如:

for r in record:
    print r.file_id

但在这种情况下,我需要将这些多条记录作为JSON回复发送给JQuery ajax。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

首先,不要将record一个对象称为查询,集合,检测序列/等等......然后你就可以得到一个字典列表。

qry = meta.Session.query(model.EmpsTable).filter(model.EmpsTable
         .firstname.like(searchQuery))

return {'data': [
         {'file_id':record.file_id, 'filename':
            record.filename, 'links_to' :record.url}
        for record in qry
       ]}

要将返回的对象转换为JSON,您可能已经为此设置了方法,或者只是在其上调用json.dumps()。

更新:出于安全原因,正如by @MrGhimire指出的那样,最好将列表包装在字典中。