2016-12-31 21 views
1
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() 

API是建立與瓶,flask_restful和PostgreSQL 其次文檔並按照它,我創建了資源領域,獲取相同的資源從數據庫使用postgresql命令在返回字段。我在哪裏做錯了輸出看起來像在圖片中。該數據庫只有2行,但結果顯示爲空並顯示2次。什麼我在我的燒瓶寧靜的API輸出缺的就是空和反覆

輸出 enter image description here

+0

調試提示:嘗試打印'cur.fetchall() '看看你得到了什麼。 –

+0

另外,一般來說,複製/粘貼比使用屏幕截圖要好。 –

+0

[('jobs2','jobs description2'),('jobs3','jobs3 description')]。在控制檯上運行。打印具有我需要的確切數據。但是有了很大的空間,我想它不是空間問題。 –

回答

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_ 
+0

雖然你錯過elem [1]但沒什麼大不了的。謝謝 –