Flask Web 極簡教程(三)- SqlAlchemy(Part A)

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰」的第29天,點選檢視活動詳情

一、ORM 模型設計

在MTV架構中,M表示Model層負責與資料庫進行互動,ORM(Object Relational Mapping)物件關係對映可以將具體的模型與資料庫中的表進行一一對應,模型物件的屬性與資料庫表的欄位是一一對應的;通過模型的操作來實現對資料庫表的操作

ORM的重要特性: - 基於面向物件的程式設計思想 - 幾乎不寫SQL,提升開發效率 - 支援多種型別資料庫切換

SQLAlchemy

SQLAlchemy 是一個提供了SQL工具包及物件關係對映(ORM)工具的第三方庫,Flask框架本身是沒有ORM功能的,因此需要通過使用Flask-SQLAlchemy擴充套件來實現ORM,關於Flask-SQLAlchemy的介紹可以參考官方文件

Flask的ORM擴充套件需要單獨進行安裝,但是需要提前安裝 mysqlclient 依賴 ```bash

依賴

pip3 install mysqlclient pip3 install Flask-SQLAlchemy ```

Flask-SQLAlchemy連線資料庫的配置如下: python app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://使用者名稱:密碼@資料庫地址/要連線的資料庫' SQLALCHEMY_DATABASE_URI,資料庫URI既統一資源定位符,是一個用於標識資源名稱的字串

如果要配置多個數據庫,可以使用這種方式 python SQLALCHEMY_BINDS = { 'mysql': 'mysqldb://localhost/資料庫', 'sqlite': 'sqlite:////path/to/資料庫' }

ORM 模型建立

在PyCharm建立新的Flask專案flask-sqlalchemy image.png

使用ORM模型需要先繫結到Flask物件,在app.py中建立Flask物件之後,將物件繫結到資料庫 ```python from flask_sqlalchemy import SQLAlchemy

配置資料庫連線

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@localhost/flask'

繫結Flask物件

db = SQLAlchemy(app) ```

接著在該檔案中設計資料庫模型User ```python

設計資料庫模型

class User(db.Model): # 指定表名稱 # tablename = 'user' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), nullable=False) password = db.Column(db.String(256), nullable=False) birth_date = db.Column(db.Date, nullable=True) age = db.Column(db.Integer, default=0) ```

終端中執行建立命令輸入 python3 ,通過執行以下命令建立表或者刪除表 python from app import db db.create_all() # 建立所有的表 db.drop_all() # 刪除所有的表

退出命令列,重新進入,先執行刪除,再執行建立,不指定表名時預設表名由sys+模型名稱首字母小寫 image.png

ORM 模型欄位型別

| 欄位型別 | 欄位描述 | | --- | --- | | Integer/Float | 整數型別/浮點數型別 | | String(size) | 字串,通過max_lenght指定字串長度 | | Text | 長文字 | | DateTime | 時間型別,對應datetime | | Boolean | 布林型別 | | PickleType | 儲存為一個持久化的Python物件 | | LargeBinary | 儲存一個任意大的二進位制資料 |