57个挑战之57(part3):服务端逻辑

输入题目:


今天先完成服务端:

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


上代码:

import copyimport flask,pymongofrom flask import Flask,jsonify,requestapp = 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

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插入:

插入效果:


后端返回数据:


2.收集全量的逻辑

getall 接口



后端返回

3.随机获取接口

get 接口

每次随机取2个


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


两次取得的数据不一样

4.update 接口


后端展示:


调用getall接口

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

的确修改过来了:


发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章