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次。
答案 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_