Flask框架之八SQLAlchemy -orm

メΨLEI.o 0發表於2020-10-29

在這裡插入圖片描述

Flask框架之SQLAlchemy -orm

一、ORM

  • SQL語句重負使用率不高,越複雜的SQL語句條件越多,程式碼越長。會出現很多相近似的SQL語句
  • 很多SQL語句是在業務邏輯中拼出來的,如果有資料庫需要修改,就要去修改這些邏輯,很容易漏掉某些SQL語句的修改
  • 寫SQL時容易忽略web安全問題
  • 使用ORM的優點:
  • 易用性:使用ORM做資料庫的開發可以有效的減少SQL語句,寫出來的模型也更加直觀
  • 效能損耗小
  • 設計靈活:可以輕鬆寫出來複雜的查詢
  • 可移植性:SQLAlchemy封裝了底層的資料庫,實現支援多個關係型資料庫,包括MySQL,SQLite
    在這裡插入圖片描述
    在這裡插入圖片描述

二、使用SQLAlchemy

  • 連線資料庫
  • 建立Base基類
  • 建立類,新增屬性,新增資料型別約束
  • 建立session
  • 新增建立例項新增資料
  • 新增資料到資料庫
  • 提交資料
    在這裡插入圖片描述
    在這裡插入圖片描述

三、SQLAlchemy資料的增刪改查

1.增加資料

def add_data():
 		user = User(新增屬性的資料)
		session.add(user) 
		sesssion.commit()

在這裡插入圖片描述
在這裡插入圖片描述
2.刪除資料

def delete_data():
    date = session.query(Food).first()
    session.delete(date)
    session.commit()

3.修改資料

def update_data():
 	data = session.query(Usre).filter(條件判斷).all() 
 	data.屬性名 = xxx
 	session.commit()

在這裡插入圖片描述
在這裡插入圖片描述
4.查詢資料

def search_data():
	 data = session.query(Usre).filter(條件判斷).all()
 	 print(data)

在這裡插入圖片描述
在這裡插入圖片描述

四、SQLAlchemy的常用型別

程式碼型別
Integer整形
Float浮點型別
Boolean傳遞True/False進去
DECIMAL定點型別
enum列舉型別
Date傳遞datetime.date()進去,如(2020 10 29)
DateTime傳遞datetime.datetime()進去。如(2020 10 29 21 36 21)
Time傳遞datetime.time()進去。如( 21 36 21)
String字元型別,使用時需要指定長度,區別於Text型別
Text文字型別
LONGTEXT長文字型別

在這裡插入圖片描述
在這裡插入圖片描述

五、column常用引數和聚合函式

  • 常用引數
引數用法
default預設值:當你設定了default=xxx的時候,你如果沒有傳遞這個資料,那麼資料庫會顯示你設定的這個值
nullable是否可空:nullable=False 表示不能為空
primary_key是否為主鍵
unique是否唯一: 當你設定了這個引數的時候,那麼統一列的資料不能相同,相同就報錯
autoincrement是否自動增長
onupdate更新的時候執行的函式
name該屬性在資料庫中的欄位對映
  • 聚合函式
函式意義
func.count統計行的數量
func.max求最大值
func.min求最小值
func.avg求平均值
func.sum求和

在這裡插入圖片描述
在這裡插入圖片描述

相關文章