从MongoDB读取'GET'方法,TypeError:字符串索引必须是整数,而不是str
文件: 代码: 但是发生类型错误:字符串索引必须是整数,而不是str从MongoDB读取'GET'方法,TypeError:字符串索引必须是整数,而不是str,mongodb,python-2.7,Mongodb,Python 2.7,文件: 代码: 但是发生类型错误:字符串索引必须是整数,而不是str 对于预期的结果,我应该怎么做?您需要修复以下两行: json_orders = dumps(orders) target_order_ID = [target_order_ID for target_order_ID in json_orders if target_order_ID["id"] == order_ID] 第一次转储生成一个字符串,因此json_orders是一个字符串。当您在列表理解中遍历它时,您正在遍历字
对于预期的结果,我应该怎么做?您需要修复以下两行:
json_orders = dumps(orders)
target_order_ID = [target_order_ID for target_order_ID in json_orders if target_order_ID["id"] == order_ID]
第一次转储生成一个字符串,因此json_orders是一个字符串。当您在列表理解中遍历它时,您正在遍历字符串的字符,这些字符本身就是一个字符串。然后尝试使用[id]索引这些字符串,这是错误的来源
还要注意,第二行还有另一个错误。您正在为target_ID分配一个列表,当它出现时,您只需要列表中的一个元素。您已经过度使用了target\u order\u ID这个名称,因此稍微清理一下可能也会有所帮助
from flask import Flask, jsonify, make_response, request
import pymongo
from bson.json_util import dumps
connection = pymongo.MongoClient("localhost", 27017)
db = connection.RESTbucks
collection = db.order
app = Flask(__name__)
@app.route('/order/<int:order_ID>', methods=['GET'])
def get_order(order_ID):
orders = collection.find()
json_orders = dumps(orders)
target_order_ID = [target_order_ID for target_order_ID in json_orders if target_order_ID["id"] == order_ID]
if target_order_ID == order_ID:
return jsonify({'order': json_orders[order_ID]})
else:
return make_response(jsonify({'error': 'Not found'}), 404)
"{ "_id" : ObjectId("553221c56d88889eb26f6557"), "id" : 1, "name" : "Americano", "quantity" : 3, "milk" : "No", "size" : "short" }"
json_orders = dumps(orders)
target_order_ID = [target_order_ID for target_order_ID in json_orders if target_order_ID["id"] == order_ID]