【问题标题】:querying from table and returning as JSON从表中查询并以 JSON 形式返回
【发布时间】:2018-10-09 15:30:40
【问题描述】:

所以我试图从我的数据库中的一个表中查询。我正在使用python顺便说一句。我想通过循环将它们作为 JSON 返回。

但我只从表中返回一行,如下所示:

{
    "content": "content1", 
    "date": "date1", 
    "title": "title1"
}

这是我的代码:

ann = Announcements.query.all()

for data in ann:
    return jsonify({'date': data.date, 'title': data.title, 'content': data.content })

我想返回这样的东西:

{
    "content": "content1", 
    "date": "date1", 
    "title": "title1"
},
{
    "content": "content2", 
    "date": "date2", 
    "title": "title2"
},
{
    "content": "content3", 
    "date": "date3", 
    "title": "title3"
}

我在这里错过了什么?

【问题讨论】:

  • 您的 for 循环中有一个 return,因此您的循环将在一次迭代后终止。您可能想要创建一个列表,然后在循环中将您的字典附加到列表中。循环后返回 json 编码的列表。

标签: python json sqlalchemy flask-sqlalchemy


【解决方案1】:

我认为您应该首先创建一个列表。并附加所有数据和 jsonify。如果你返回 jsonify 你应该使用方法。

def jsonify(ann):
    my_list = []
    for data in ann:
      my_list.append({'date': data.date, 'title': data.title, 'content': data.content })
    return jsonify(my_list)

否则你应该像这样循环打印你的数据

for data in ann:
   print(jsonify({'date': data.date, 'title': data.title, 'content': data.content }))

Look at this for more details

【讨论】:

  • 是的,我同意伊利亚。 JSON有两种数据类型:对象和数组。如果你对括号有问题,你可以用子字符串替换。
  • @IljaEverilä 是的,我刚刚确认了。我的坏我会删除我的评论
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-26
  • 2017-09-17
  • 1970-01-01
  • 2016-12-18
相关资源
最近更新 更多