Streamlit建置GoogleSheet簡易資料庫
🙌前言
Streamlit是使用python語言的前端套件,他最大的好處是就能透過套件本身程式碼生成一篇篇還算能看的使用者介面,對於Html、CSS、Javascript等前端語言感到不舒服的開發者可以妥善利用,在部署上難度也不高,幾乎可以一鍵達成。
除了python本身內鍵已經有本地端sqlite可以進行資料存儲,如果資料需要上雲的話就會需要額外找尋雲端資料庫來進行資料存放,標準的關聯式有MySQL、postgreSQL、SQLserver等等比較常見的工具、非關聯式資料庫則可以透過mongoDB、firestore等等工具進行挑選。
本篇要介紹的內容是針對比較簡易的前端介面,可以用Google提供的GoogleSheet來進行資料存放,並且透過GoogleAppScripts來做後端語言進行操作。
基本API概念
所謂前端與後端分離開發,就是透過API的方式進行資料交換,API就是一串網址(URL)外加一些夾帶的參數,參數可以是純文字、也可以是物件,然而物件的部分又可分為XML或JSON,這兩項是最常被拿來使用於API的資料交換,包含輸入到後端存放資料或者是從資料庫取出資料到前端進行渲染。
公共工程常用的估價系統(PCCES)便是以XML進行資料交換,詳情可見ExcelVBA@PCCES契約項目後處理,在此不多做說明
JSON
大多數的第三方API都是採用JSON格式進行傳輸,這也是本篇主要資料格式,關於JSON的格式通常是以鍵-值對的方式儲存,也就是所謂的key-value,要進行資料取用或組裝時特別的方便,這也是為什麼會選用他來做為我在streamlit及GAS中的交換媒介。
JSON資料可以分為GAS對象、JSON字串、python對象,每個資料都可以互相轉移,JSON字串主要是在API中所夾帶的字串,其餘python對象、GAS對象則是依照不同語言解析成相對應的物件。
萬一遇見處理多巢階層的過程可以藉由扁平化(將巢狀鍵值對處理到頂層)的方法方便資料取用,也可以透過反扁平化的方法將原本的資料恢復原狀。
在GAS中關於JSON格式的轉換
JSON.parse()
JSON.parse()
方法用於將 JSON 字串解析為 JavaScript
物件。它接受一個合法的 JSON 字串並返回解析後的 JavaScript 值。
JSON.stringify()
JSON.stringify()
方法用於將 JavaScript 物件轉換為 JSON
字串。它接受一個 JavaScript 物件並返回相應的 JSON 格式字串。
在Python中關於JSON格式的轉換
json.dumps()
json.dumps()
方法用於將 Python 物件轉換為 JSON
字串。它接受一個 Python 物件並返回相應的 JSON 格式字串。
json.loads()
json.loads()
方法用於將 JSON 字串解析為 Python
物件。它接受一個合法的 JSON 字串並返回解析後的 Python 值。
json.load()>目前沒用到
json.load()
方法用於從檔案中讀取 JSON 資料並將其解析為
Python 物件。它接受一個可讀取的檔案物件,並返回解析後的 Python 值。
Python對象操作
單層
1 | data = json.loads(json_str) |
多層
1 | import json |
GAS對象操作
1 |
|
綜合操作
streamlit
1 | import streamlit as st |
GAS
1 | // 定义Google Sheets的ID |
JSON物件特殊處理
資料扁平化
1 | function doPost(e) { |
資料扁平化回復
1 | function unflattenObject(obj) { |
VBA部分
只是先做紀錄,之後再跟collection的資料格式一起介紹
1 | Sub TestDictionary() |
總結
- 使用Streamlit和Google Sheets:
- Streamlit能快速生成前端介面,對不熟悉前端技術的開發者友好。
- Google Sheets作為雲端資料庫,結合Google Apps Script (GAS)實現資料操作。
- JSON格式的優勢:
- JSON是API資料交換中常用的格式,方便資料取用和組裝。
- 文章介紹了在Python和GAS中如何進行JSON資料的解析和生成。
- 多層資料結構處理技術:
- 使用扁平化和反扁平化技術,方便處理和還原多層嵌套的資料結構。
- 提供了Python和GAS中處理多層資料結構的範例。
- 實際應用範例:
- 展示了如何在Streamlit應用中將資料轉換為JSON格式,並通過HTTP POST請求發送到GAS後端。
- 在GAS後端接收並解析JSON資料,將其寫入Google Sheets的具體步驟。
- Python和GAS中的JSON操作方法:
- 詳述了在Python中使用
json.dumps()
和json.loads()
進行JSON格式轉換。 - 說明了在GAS中使用
JSON.stringify()
和JSON.parse()
處理JSON資料。
- 詳述了在Python中使用