快捷搜索:  汽车  科技

客户端与服务器端开发(57个挑战之57part3)

客户端与服务器端开发(57个挑战之57part3)2.更新函数:参考下面:https://mongoing.com/docs/reference/operator/aggregation/sample.htmlimport copy import flask pymongo from flask import Flask jsonify request app = Flask(__name__) def insert_mongo(list1): myclient = pymongo.MongoClient('mongodb://127.0.0.1:27017/') mydb= myclient.client["lukedb3"] mycol = mydb["site"] x = mycol.insert_many(list1) print(x.i

输入题目:

客户端与服务器端开发(57个挑战之57part3)(1)

今天先完成服务端:

主要使用了pymongo 进行相关的逻辑处理。

上代码:

import copy import flask pymongo from flask import Flask jsonify request app = Flask(__name__) def insert_mongo(list1): myclient = pymongo.MongoClient('mongodb://127.0.0.1:27017/') mydb= myclient.client["lukedb3"] mycol = mydb["site"] x = mycol.insert_many(list1) print(x.inserted_ids) return "success" def get_mongo(): myclient = pymongo.MongoClient('mongodb://127.0.0.1:27017/') mydb= myclient.client["lukedb3"] mycol = mydb["site"] list2 =[] for x in mycol.aggregate([{'$sample':{'size':2}}]):#随机取2个数据 del x['_id'] list2.append(x) print(list2) return list2 "success" def getall_mongo(): myclient = pymongo.MongoClient('mongodb://127.0.0.1:27017/') mydb= myclient.client["lukedb3"] mycol = mydb["site"] list3 =[] for x in mycol.find({} {"_id":0}):# 找到所有的数据,并把“_id”这列删除 list3.append(x) print(list3) return list3 "success" def update_mongo(listold listnew): myclient = pymongo.MongoClient('mongodb://127.0.0.1:27017/') mydb= myclient.client["lukedb3"] mycol = mydb["site"] for x in range(0 len(listold)):#把id项目删除 myquery = listold[x] newvalues = {"$set":listnew[x]} mycol.update_one(myquery newvalues) return "success" @app.route('/') def hello_world(): return 'Hello World!' @app.route('/get' methods=['POST']) def get(): #调用查询逻辑 #获取题目10个 #获取难度3个容易,5个中等,2个难题 list2 info = get_mongo() return jsonify({"info":info "data":list2}) @app.route('/append' methods=['GET' 'POST']) def append(): #调用插入逻辑 list1 = request.json["list"] #dic1 = {"Q":"How old is Republic of China1" "A":"73" "D1":"72" "D2":"74" "D3":"111"} #list1 =[dic1] list2 = copy.deepcopy(list1) info = insert_mongo(list1) #print(info) #print(dic1) #print(list2) return jsonify({"info":info "data":list2}) @app.route('/getall' methods=['POST']) def getall(): # 调用抽取接口,把题库数据读出来 list3 info = getall_mongo() return jsonify({"whole question lib is":list3 "info":info}) @app.route('/update' methods=['POST']) def update(): # 调用update 接口,修改题目 listold = request.json["listold"] listnew = request.json["listnew"] info = update_mongo(listold listnew) return jsonify({"info": info "oldinfo":listold "newinfo":listnew}) if __name__ =='__main__': app.run(host='0.0.0.0' port=8008 debug = True)

这里用了几个函数:

  1. 随机查询

mycol.aggregate([{'$sample':{'size':2}}]):# 随机查询2个数据

上面用到了mongodb 的随机查询,aggregate() 函数,从mongodb随机取几个数据:

参考下面:https://mongoing.com/docs/reference/operator/aggregation/sample.html

客户端与服务器端开发(57个挑战之57part3)(2)

2.更新函数:

myquery = listold[x]

newvalues = {"$set":listnew[x]}

mycol.update_one(myquery newvalues)

update_one() 函数,首先搜索满足条件的文档,然后用new values 对这个文档做update。

3.查找所有数据

mycol.find({} {"_id":0})

find()函数里面的意思是:找到所有的数据,对找到的数据,并把“_id”这列删除

效果图:

  1. 插入逻辑

append 接口

postman插入:

客户端与服务器端开发(57个挑战之57part3)(3)

插入效果:

客户端与服务器端开发(57个挑战之57part3)(4)

后端返回数据:

客户端与服务器端开发(57个挑战之57part3)(5)

2.收集全量的逻辑

getall 接口

客户端与服务器端开发(57个挑战之57part3)(6)

客户端与服务器端开发(57个挑战之57part3)(7)

后端返回

3.随机获取接口

get 接口

每次随机取2个

客户端与服务器端开发(57个挑战之57part3)(8)

客户端与服务器端开发(57个挑战之57part3)(9)

看到两次取到的数据不一致。

客户端与服务器端开发(57个挑战之57part3)(10)

两次取得的数据不一样

4.update 接口

客户端与服务器端开发(57个挑战之57part3)(11)

后端展示:

客户端与服务器端开发(57个挑战之57part3)(12)

调用getall接口

看看已经修改过了来了吗?

的确修改过来了:

客户端与服务器端开发(57个挑战之57part3)(13)

猜您喜欢: