iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
AI & Data

AIoT的藍藥丸與紅藥丸,你選哪個?系列 第 30

Day 18:用資料庫打敗資料庫(Code Escape: Break Free)

  • 分享至 

  • xImage
  •  

前情提要

  在Day 17:建造虛擬通道的關鍵中,莫菲斯提議:用Python和MongoDB來創造一個虛擬通道,讓你們可以從AI大帝的控制中脫離。於是你和莫菲斯進入到一個全白的虛擬空間,在這裡你們可以自由執行程式碼,練習各種技能,還可以提供任何你可能會需要的道具。崔尼蒂會盡量拖延AI大帝攻擊我們的時間,而你要在這個『學習程式』盡快學會怎麼建造虛擬通道,讓大家成功逃出。

莫菲斯在上一集教了你以下步驟:

  1. 如何從pymongo模組導入MongoClient,就像是得了一把可以打開圖書館門的鑰匙。
  2. 然後,建立一個MongoClient物件,並指定資料庫的位置和名稱。這樣就連接到了本地端(localhost)的27017號埠上了。這就像是用這把鑰匙打開圖書館的門,走進去。
  3. 接著,選擇了一個叫做escape的資料庫,並在該資料庫中選擇一個資料集(collection),叫做portal。這就像是在圖書館中找到了一個特定的書架(資料集),準備上架新書。

用資料庫打敗資料庫

  「你可以用insert_one指令,新增一個代表『虛擬通道參數』的文件(document)。這就像準備好一本新書,並確定了它的各種資訊(如書名、作者等)。再用insert_one把記錄新增到資料集當中,就像是上架一本新書(艾薇Ivy, 2023)。像這樣……」

col.insert_one({“_id”: 1, “name”: “Zion”, “destination”: “Reality”, “password”: “redpill”, “status”: “open”})

  「這樣就建立了一個『可以讓我們回到真實世界的虛擬通道』,叫做Zion。但是需要輸入正確的密碼redpill才能打開這個虛擬通道。」

  「建立好通道之後,我們可以用find_one指令來查詢一個文件(document),確認它是不是已經被建立好了。就像是在圖書館裡找一本特定的書一樣,如果找到了符合條件的書,就可以拿起來看(艾薇Ivy, 2023)。像這樣……」

col.find_one({“_id”: 1})

  「這樣就可以查到Zion這個虛擬通道的資訊?」
  你和莫菲斯在白色的虛擬空間中,練習了一陣子Python和MongoDB的基本操作,你覺得自己已經掌握了一些技巧。但是,你也知道這還不夠,你還需要學會更多的東西,才能建造出一個真正的虛擬通道。
  「好了,我們要加快速度了。」莫菲斯說,「再來,我們可以用update_one指令來修改一個文件(document),改變它的屬性。像這樣……」

col.update_one({“_id”: 1}, {“$set”: {“status”: “closed”}})

  「哦……我懂了!這就像是圖書館裡的一本書被借走了,我們要把這本書的狀態更新成『已借出』嗎?(艾薇Ivy, 2023)」
  「完全正確!在這邊我們可以用來關閉Zion這個虛擬通道,這樣AI大帝就沒辦法追蹤我們了。」
  「原來如此,還有這種操作……」
  「最後,用delete_one指令來刪除一個文件(document),移除它的紀錄。就像是把圖書館的書下架(艾薇Ivy, 2023)。像這樣……」

col.delete_one({“_id”: 1})

  「哦……對耶!這樣就可以徹底刪除Zion這個虛擬通道,這樣AI大帝就沒辦法找到我們了!」
  「你學得很快,我猜你應該學會了。」莫菲斯表情有點緊張,「我們該回去趕快把虛擬通道弄出來,希望崔尼蒂有幫我們爭取一些時間。」
  聽完莫菲斯的指導,你不敢鬆懈,因為你知道這個計劃執行起來一定沒有想像中的簡單。而且,AI大帝一定不會讓你們輕易逃走。


上一篇
Day 17:建造虛擬通道的關鍵
下一篇
Day 18:MongoDB神秘圖書館的鑰匙 (1) #insert_one #find_one
系列文
AIoT的藍藥丸與紅藥丸,你選哪個?62
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言