iT邦幫忙

2022 iThome 鐵人賽

DAY 15
1
自我挑戰組

Python and LINE Bot系列 第 15

[Day15] 連結資料庫

  • 分享至 

  • xImage
  •  

一、Flask-SQLAlchemy

SQLAlchemy 是為 Python 程式語言提供的開源 SQL 工具包及 ORM (物件關係對映器)。
Flask-SQLAlchemy 是 SQLAlchemy 擴充模組,這個模組為 Flask 提供了資料庫的操作,使用上十分方便,也容易套用及擴充。
 

  1. 安裝模組

在命令提示字元中以命令方式安裝 Flask-SQLAlchemy 及 psycopg2 模組,才能夠連接 PostgreSQL 資料庫

pip install -U flask_sqlachemy
pip install -U psycopg2
  1. ORM 的使用

應用程式在使用資料庫時對資料的儲存、修改、刪除和讀取都要寫相對應的程式指令,且程式碼有許多需要重複使用。
而 ORM (物件關係對映)是一種將資料庫資料對映到程式物件的方法,程式物件先建立好資料模型,連線到資料庫後,只要操作程式物件即可處理資料庫資料,因此無論使用那一種資料庫,都可以相同的方式對資料庫存取。這種方式可以將資料庫的操作變得簡單且安全。

Flask-SQLAlchemy 使用 ORM 進行資料庫操作的基本步驟如下:

https://ithelp.ithome.com.tw/upload/images/20220929/20151448iZ8rDalUaK.png

 
 

二、設定資料庫連線

資料庫的連線方式是使用 URI 字串,不同資料庫有不同的格式及參數,所以當資料庫類型改變時,只要改變連線字串即可。

Flask-SQLAlchemy 將資料庫連線的方式定義成帶有參數的 URI 字串,不同的資料庫有不同的格式的連線字串,所以當使用的資料庫類型改變,只要修改資料庫的連線字串即可,相當方便。
以 PostgreSQL 為例,設定的語法為:

from flask import Flask,  request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 
       'postgresql://管理者帳號:管理者密碼@資料庫位址:5432/資料庫名稱'
db = SQLAlchemy(app)

 
 

三、定義資料模型

在程式中產生一個資料庫的類別名稱,裡面定義資料表的每一個欄位,這個欄位要對應到資料庫裡面的資料欄位。
設定的語法為:

class 類別名稱 (db.Model):
    __tablename__ = '資料表名稱'
    主索引欄位 = db.Column(db.Integer, primary_key=True)
    欄位名稱1 = db.Column(欄位型態1[, 欄位參數1, 欄位參數2, …])
    欄位名稱2 = db.Column(欄位型態2[, 欄位參數1, 欄位參數2, …])
……
def __init__(self, 欄位名稱1, 欄位名稱2, …):
    self.欄位名稱1 = 欄位名稱1
    self.欄位名稱2 = 欄位名稱2
……

類別名稱: 可自行命名
資料表名稱: 要建立的資料表名稱
主索引欄位: 主索引鍵,不可重複,一定要有
資料型態: 資料欄位常用型態:

資料型態名稱 程式資料型態 說明
Integer int 整數
Float float 浮點數br
String / Text Str 字串 / 長篇文字
Boolean bool 布林值

欄位參數: 常用的參數類型:

欄位參數 說明
primary_key 主鍵,設為True,表示主鍵
Unique 唯一值,設為True,此欄位值不可重複
Index 索引,設為True,會建立索引,提升查詢效率
Nullable 是否可以為 null,預設為 True
default 設定預設值

※資料模型定義完成要用 db.create_all() 建立資料表物件

 

範例:在 testdb 資料庫中建立 students 資料表的資料模型。sid 為主索引欄位,name 為姓名,addr 為住址,email 為電子郵件。sid 的型態為整數,其餘皆為字串。
https://ithelp.ithome.com.tw/upload/images/20220929/20151448bu65FnWoAS.png

執行程式後到瀏覽器輸入網址,顯示成功連線
https://ithelp.ithome.com.tw/upload/images/20220929/20151448bFLQqOygXg.png

開啟 pgAdmin ,展開圖片中紅色框框中的選項,就能看到新增好的 students 資料表
https://ithelp.ithome.com.tw/upload/images/20220929/20151448VYL3iNl45Z.png

在 students 資料表按滑鼠右鍵,點選 Properties
https://ithelp.ithome.com.tw/upload/images/20220929/201514486lsokZ7KNU.png

在 General 標籤下可以看到資料表名稱、擁有者等等資訊
https://ithelp.ithome.com.tw/upload/images/20220929/20151448mJmyByxBnJ.png

在 Columns 標籤中可以看到建立好的資料欄位
https://ithelp.ithome.com.tw/upload/images/20220929/20151448sYBOnxTYN4.png

 
 
 
 
 

參考資料:
Python與LINE Bot機器人全面實戰特訓班-Flask最強應用、
https://zh.wikipedia.org/zh-tw/SQLAlchemy


上一篇
[Day14] 安裝PostgreSQL資料庫
下一篇
[Day16] 資料表操作
系列文
Python and LINE Bot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言