利用聊天機器人對資料庫下指令吧!

Chatbot學習筆記-Day4

Jason Tsai
4 min readAug 27, 2021

回想一下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才啟動操作資料庫的各種函式,程式碼的部分如下:

圖十 刪除資料

透過這樣的方式,就可以在主程式呼叫我們需要的功能囉。

那今天的部分就先告一亂落了,

完整程式碼則會放在這邊,謝謝觀看!

--

--

Jason Tsai

Data Analyst in financial industry with experience as Tableau consultant and DA at Martech field.