我在烧瓶中遗漏了什么,restful api输出为null并重复

时间:2016-12-31 12:48:29

标签: python postgresql flask flask-restful

from flask import Flask
from flask_restful import Resource, fields, marshal_with,Api
import psycopg2

conn=psycopg2.connect("dbname=jobkhulyodb user=postgres password=password")
cur=conn.cursor()

app=Flask(__name__)
api=Api(app)

resource_fields = {
    'job_title': fields.String,
    'job_description': fields.String,
}

class Todo(Resource):
    @marshal_with(resource_fields, envelope='resource')
    def get(self, **kwargs):
        cur.execute("SELECT job_title,job_description from jobs")
        return cur.fetchall()


api.add_resource(Todo, '/foo', endpoint='todo')

if __name__=='__main__':
    app.run()

使用 Flask,flask_restful和postgresql 构建api 遵循文档并根据它创建了一个资源字段,并使用返回字段中的postgresql命令从数据库中获取相同的资源。在哪里以及我做错了什么,输出看起来像在图片中。数据库只有2行,但结果显示为null并出现2次。

输出 enter image description here

1 个答案:

答案 0 :(得分:1)

您将获得一个包含cur.fetchall()元组的列表,因此此代码必须满足您的需求:

...
def get(self, **kwargs):
    ...
    list_ = []
    for elem in cur.fetchall():
        list_.append({ 'job_title': elem[0], 'job_description': elem[1] })
    return list_