用 SQL 指令操作資料庫前,跟 [Day15] 介紹的 ORM 一樣,要先設定資料庫連線,並產生 db 物件。
語法為:
from flask import Flask, request
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] =
'postgresql://管理者帳號:管理者密碼@資料庫位址:5432/資料庫名稱'
db = SQLAlchemy(app)
用 SQL 語法操作資料庫的語法:
命令變數 = "SQL語法"
db.engine.execute(命令變數)
新增資料表的指令:
CREATE TABLE 資料表名稱 (
欄位 1 資料型態,
欄位 2 資料型態,
欄位 3 資料型態,
...
)
範例:新增一個 students2 資料表,sid 為主索引欄位,name 為姓名,addr 為住址,email 為電子郵件。sid 的型態為整數,其餘皆為字串。
執行程式後到瀏覽器輸入網址 127.0.0.1:5000/setup
,會看到顯示資料表建立成功
到 pdAdmin 管理頁面中,可以看到已新增的 students2 資料表
用 SQL 指令操作資料庫也是用 CRUD 的方式,分別為新增( Create )、查詢( Read )、更新( Update )、刪除( Delete )。
新增資料的語法:
INSERT INTO 資料表名稱 (欄位名稱1, 欄位名稱2, 欄位名稱3, ...)
VALUES(欄位值1, 欄位值2, ...)
#「欄位值」的資料型態必須與「欄位名稱」對應,若資料型態不符合執行會產生錯誤
範例:新增三筆資料
到 pdAdmin 管理頁面中,可以看到已新增的資料
查詢資料的語法:
SELECT 欄位名稱1, 欄位名稱2, 欄位名稱3, ...
FROM 資料表名稱
[WHERE 條件式]
[ORDER BY 欄位名稱 [ASC|DESC]]
#[]內的代表可有可無
範例:查詢姓名及信箱,排序方式是以 email 為條件來做遞增排序
執行程式後在網址列輸入 127.0.0.1:5000/query
就可以看到查詢結果
更新資料的語法為:
UPDATE 資料表名稱
SET 欄位名稱 1 = 值 1, 欄位名稱 2 = 值 2, 欄位名稱 3 = 值 3, ...
[WHERE 條件式]
範例:更改地址
在網址列最後面輸入欲更改的資料的主索引欄位
到 pdAdmin 管理頁面中,可以看到資料已更新
刪除資料的語法為:
DELETE FROM 資料表名稱
[WHERE 條件式]
範例:以姓名為條件來刪除資料
執行程式後到網址列輸入 127.0.0.1:5000/delete
,顯示資料刪除成功
到 pdAdmin 管理頁面中,可以看到資料已刪除
參考資料:
Python與LINE Bot機器人全面實戰特訓班-Flask最強應用