2013-10-16 131 views
0

我想通過http請求通過燒瓶python框架傳遞數據,並在pomongo的幫助下將其插入到mongodb中。PyMongo插入文檔通過Flask

我的代碼是這樣的:

from flask import Flask, request 
import json 
from pymongo import MongoClient 
from bson import json_util 
from bson.objectid import ObjectId 

#setting up the flask app 
app=Flask(__name__) 

#connecting to mongoDB 
client=MongoClient('localhost', 27017) 
db = client["test"] #db name 
col=db["test"] #collection name 

@app.route('/data/insert/', methods=['GET']) 
def insert(): 
    if request.method == 'GET': 
     result = request.data('docs') 
     col.insert(result) 
    return "it worked!\n" 

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

我通過URL傳遞數據:

127.0.0.1:5000/data/insert/docs={"hello":"world"} 

奇怪的是,它的接受數據,甚至吐回來時,我嘗試只是以字符串格式返回它,但它需要被轉換或以我想念的方式被訪問。

Ps。我已經嘗試了方括號和雙引號的正確轉義字符。

+0

提問時,請確保包含問題描述。現在,你剛剛說過你「有問題」,但沒有說出問題所在。你有錯誤嗎?如果是這樣,請顯示完整的堆棧跟蹤。數據是否按照您期望的方式插入?如果是這樣,你是如何期望它被插入的?你做了什麼來測試數據插入不正確?您是否測試過來自Flask('result')的數據是PyMongo預期的正確類型? –

+0

本質上它會導致Flask返回一個錯誤404頁面,我認爲它是瓶子的默認值。我最終通過實施類似於下面發佈的dm03514的答案來解決問題。在將來詢問時,我會記住你的建議。謝謝 – user2884593

回答

1

我猜result = request.data('docs')返回一個字符串,

我相信insert需要一個字典,而不是一個字符串

也許,somethign像:

result = json.loads(request.data('docs'))

的上述用途Python內置的json庫試圖將docs字符串解析爲python數據類型。如果docs無效JSON,請記住處理此案例!

+0

我最終使用這個,謝謝! – user2884593

+0

@ user2884593,如果您發現答案有幫助,請註冊或接受:) – dm03514