伸缩自如的Flask [day10] 将资料写进DB(pymongo)

好的,要能将资料写进MongoDB,首先我们需要先安装MongoDB:

https://www.mongodb.com/try/download/community

请点选右方绿色的Download按钮来执行安装本地Server端的免费社群版本,
假设对於云端版本有兴趣的朋友,可以自行研究MongoDB Atlas或是像GCP 也有可以2G资料以内免费使用的Datastore。

安装的同时,请确定Compassu也有一同被安装以方便我们来确定DB的资料有被使用。
https://ithelp.ithome.com.tw/upload/images/20210516/20122678VV2Yv6BZWP.png

接着,我们可以将资料写入DB了:

@app.route('/write',methods=[ "GET",'POST'])
def upload():
    print("write to mongoDB")
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["mydatabase"]
    mycol = mydb["customers"]   
    mylist = [
              { "name": "Amy", "address": "Apple st 652"},
              { "name": "Hannah", "address": "Mountain 21"},
              { "name": "Michael", "address": "Valley 345"},
              { "name": "Sandy", "address": "Ocean blvd 2"},
              { "name": "Betty", "address": "Green Grass 1"},
              { "name": "Richard", "address": "Sky st 331"},
              { "name": "Susan", "address": "One way 98"},
              { "name": "Vicky", "address": "Yellow Garden 2"},
              { "name": "Ben", "address": "Park Lane 38"},
              { "name": "William", "address": "Central st 954"},
              { "name": "Chuck", "address": "Main Road 989"},
              { "name": "Viola", "address": "Sideway 1633"}
              ]
    mycol.insert_many(mylist)
    return index()

打开Compass进行连线:
https://ithelp.ithome.com.tw/upload/images/20210516/20122678TnoVfiE8fH.png
在左边database点选mydatabase,collection点选customers以观看写入DB的结果。

这是影片版本可以参考看看:

至於pymongo其他的操作方式,可以参考W3school 的pymongo教学:
https://www.w3schools.com/python/python_mongodb_getstarted.asp

像是find_one()不加query,为寻找第一笔资料。
mycol.find(),为寻找所有资料。
也可以让资料变为list型态。

x = mycol.find_one()

mycol.find()

member_List = list(mycol.find())

将上query来寻找特定资料:

myquery = { "address": "Park Lane 38" }
mydoc = mycol.find(myquery)

修改特定资料:

myquery = { "address": "Valley 345" }
newvalues = { "$set": { "address": "Canyon 123" } }
mycol.update_one(myquery, newvalues)
mycol.update_many(myquery, newvalues)

更新
为了防止injection攻击,可以参考这篇文章:



<<:  CMoney软件工程师战斗营Stack&Queue/CSS_Week 12(爆炸的一周)

>>:  AutoCAD ActiveX #2 AcadUtility

Day12 [实作] 使用浏览器来拍照并加上滤镜

上一篇尝试了 WebRTC 的切换设备并显示自己的影像,今天我们将通过上一次的程序码来做拍照的功能并...

Day-29 Pytorch 还可以更轻松更简单!Pytorch Lightning

我们整个系列带领大家从 Python 转移到 Pytorch 的撰写,我们在这个过程应该已经深刻体...

Day 10 - 将 DEALERS 後台储存资料提取後,送至前台渲染画面 - Literal 控制项应用 - ASP.NET Web Forms C#

=x= 🌵 DEALERS 前台页面後端功能制作。 DEALERS 页面资料介绍 : 📌 制作时如图...

Day 33 | 常见 Livewire 问题:解决 Livewire.on() 没有作用的问题

这个问题其实在 Day8 的文章有稍微提到过,但大多数人看文件时都大致看一下而会忽略一些小细节,包含...

[Day 11] 从零开始的 DenseNet 生活

0. 进度条 模型 进度 VGG Net (完成) ResNet (完成) DensNet (此篇)...