반응형
Mongodb 및 Python (Flask)에 문제가 있습니다.
이 api.py 파일이 있고 모든 요청과 응답이 JSON에 있기를 원하므로 그렇게 구현합니다.
#
# Imports
#
from datetime import datetime
from flask import Flask
from flask import g
from flask import jsonify
from flask import json
from flask import request
from flask import url_for
from flask import redirect
from flask import render_template
from flask import make_response
import pymongo
from pymongo import Connection
from bson import BSON
from bson import json_util
#
# App Create
#
app = Flask(__name__)
app.config.from_object(__name__)
#
# Database
#
# connect
connection = Connection()
db = connection['storage']
units = db['storage']
#
# Request Mixins
#
@app.before_request
def before_request():
#before
return
@app.teardown_request
def teardown_request(exception):
#after
return
#
# Functions
#
def isInt(n):
try:
num = int(n)
return True
except ValueError:
return False
def isFloat(n):
try:
num = float(n)
return True
except ValueError:
return False
def jd(obj):
return json.dumps(obj, default=json_util.default)
def jl(obj):
return json.loads(obj, object_hook=json_util.object_hook)
#
# Response
#
def response(data={}, code=200):
resp = {
"code" : code,
"data" : data
}
response = make_response(jd(resp))
response.headers['Status Code'] = resp['code']
response.headers['Content-Type'] = "application/json"
return response
#
# REST API calls
#
# index
@app.route('/')
def index():
return response()
# search
@app.route('/search', methods=['POST'])
def search():
return response()
# add
@app.route('/add', methods=['POST'])
def add():
unit = request.json
_id = units.save(unit)
return response(_id)
# get
@app.route('/show', methods=['GET'])
def show():
import pdb; pdb.set_trace();
return response(db.units.find())
#
# Error handing
#
@app.errorhandler(404)
def page_not_found(error):
return response({},404)
#
# Run it!
#
if __name__ == '__main__':
app.debug = True
app.run()
여기서 문제는 mongo와주고받는 json 인코딩 데이터입니다. request.json을 저장 사전으로 전달하여 추가 경로를 "해킹"할 수있는 것 같습니다. 그래서 좋습니다. 문제는 / show입니다. 이 코드는 작동하지 않습니다 ... 일부 로깅을 수행하면
TypeError: <pymongo.cursor.Cursor object at 0x109bda150> is not JSON serializable
어떤 아이디어? 나머지 코드에 대한 제안도 환영하지만 JSON이 나를 죽이고 있습니다.
미리 감사드립니다!
해결 방법
[doc for doc in db.units.find()]
참조 페이지 https://stackoverflow.com/questions/11280382
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python 정규식 예제 (0) | 2021.02.13 |
---|---|
파이썬 How can I use pickle to save a dict? (0) | 2021.02.13 |
파이썬 Python 2.7로 py2exe를 설치할 수 없습니다. (0) | 2021.02.13 |
파이썬 Python-파일과 열기를 사용하는 경우 (0) | 2021.02.13 |
파이썬 문자열에서 단어 수를 찾는 방법은 무엇입니까? (0) | 2021.02.13 |
댓글