客户端与服务器端开发(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
输入题目:
今天先完成服务端:
主要使用了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)
这里用了几个函数:
- 随机查询
mycol.aggregate([{'$sample':{'size':2}}]):# 随机查询2个数据
上面用到了mongodb 的随机查询,aggregate() 函数,从mongodb随机取几个数据:
参考下面:https://mongoing.com/docs/reference/operator/aggregation/sample.html
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”这列删除
效果图:
- 插入逻辑
append 接口
postman插入:
插入效果:
后端返回数据:
2.收集全量的逻辑
getall 接口
后端返回
3.随机获取接口
get 接口
每次随机取2个
看到两次取到的数据不一致。
两次取得的数据不一样
4.update 接口
后端展示:
调用getall接口
看看已经修改过了来了吗?
的确修改过来了: