利用聊天機器人對資料庫下指令吧!
Chatbot學習筆記-Day4
--
回想一下Day3,我們已經知道如何利用Python操作PostgreSQL資料庫了,但每次如果都要打一長串的code來做更新實在是有點麻煩…
因此,今天就來試著讓我們的Line Chatbot直接連結資料庫吧!
Clean data
建立table之後,第一個需求便是將data推上Database對吧。
但將資料匯入之前呢,必需先對資料做一定程度的清洗,確保Chatbot能夠看得懂我們在輸入什麼。
- Line 2 : 將"換行字元"作為分隔訊息的機制
- Line 8-10 : 依據訊息的位置給予對應的屬性
- Line 12 : 將要推上Database的資料以"tuple"型式包起
這樣就可以將從Line Chatbot收到的訊息,轉換成Heroku PostgreSQL可以接受的型式囉。
Insert data
接下來就可以開始寫,讓Chatbot幫我們上傳資料的程式碼囉:
- Line 2 : 只需要輸入這行,就可以找到Database的位置
- Line 8 : 將資料推上Database的SQL
- Line 10-13 : 對應到"單筆"與"多筆"資料,使用不同函數
- Line 18 : 計算上傳數量,並回傳給Line Chatbot的使用者
- Line 23 : 需要return才能正確回覆文字訊息給使用者
那就馬上來看看執行的樣子吧!
如果將"Clean data" & "Insert data"的程式碼對照上圖,應該能更理解程式運作的方式。
Select data
輸入完成之後如果不能查詢,就會有只是print一段文字給使用者之嫌xd,至於程式碼就像下方這樣:
- Line 7 : 查詢資料的程式碼
- Line 10 : 取出所有的data並轉換為字串
- Line 13 : 利用符號將每筆記錄做出分隔
- Line 15-16 : 以"content"回傳項次以及每筆資料給使用者
實作圖片如下:
Delete data
而刪除資料也是非常常用到的功能,我們也可以寫程式來讓使用者自訂要用什麼樣條件來刪除資料,先以維度"id"為例:
- Line 2 : 先用"空格"來區隔使用者訊息
- Line 9 : 刪除資料的SQL,以"id"為判斷條件
- Line 16 : 計算刪除的筆數之後回傳給使用者
比如說,我們想刪除"Jason"這個人的data。
可在Line Chatbot上輸入"刪除 1","刪除"是啟動函式的關鍵字,"1"則是要刪除資料的"id"。
完成後再查詢一次,"Jason"的資料就成功被我們移除啦。
Update data
最後是資料更新的部分,如果只是要更動資料的一小塊,更新這個功能就非常的好用,程式碼如下:
- Line 7 : 先用”空格”來區隔使用者訊息
- Line 8-10 : 針對使用者訊息的不同區塊貼上屬性
- Line 13 : 設定更動條件的SQL
- Line 15 : 給予"新值" & "舊值"兩個不同的引數
- Line 21 : 計算資料更新的比數後回傳給使用者
由上圖可發現,依序輸入"更新"、"維度"、"舊值" & "新值"就可以快速更新資料庫了,是不是很快速呢。
當然,操作資料庫的語法相對固定,不過要如何設計Line Chatbot的操作機制也非常重要,簡單易懂的介面總是更好的。
Main process
我將今天的所有函式包在一個叫"app.py"的主程式當中。
也就是說,當使用者輸入特定關鍵字時,Line Chatbot才啟動操作資料庫的各種函式,程式碼的部分如下:
透過這樣的方式,就可以在主程式呼叫我們需要的功能囉。
那今天的部分就先告一亂落了,
完整程式碼則會放在這邊,謝謝觀看!
系列文章
- 【Day1】 打造你的第一隻聊天機器人
- 【Day2】 搜圖助理 — 聊天機器人
- 【Day3】 為聊天機器人連結資料庫
- 【Day5】 讓聊天機器人開啟爬蟲技能!
- 【Day6】 聊天機器人的Quick replies
- 【Day7】 用Flex Messages呈現爬蟲
- 【Day8】 為聊天機器人加上圖文選單