知識點: 1、資料庫配置 2、欄位選項 3、約束欄位 4、關係選擇
一、概況
在Django框架中內部已經提供ORM這樣的框架,來實現物件關係對映,方便我們運算元據庫。如果想在Flask中也達到這樣效果,需要安裝一個第三方來支援。
SQLAlchemy是一個關係型資料庫框架,它提供了高層的ORM和底層的原生資料庫的操作。flask-sqlalchemy是一個簡化了SQLAlchemy操作的flask擴充套件。
二、安裝
在Flask安裝:
pip install flask-sqlalchemy
複製程式碼
要連線資料還需要安裝pymysql
pip install pymysql
複製程式碼
三、連線資料庫
首先我們要知道本地資料庫的賬號密碼。並需要建立一個資料庫:
create database db_flask charset=utf8;
複製程式碼
在專案中資料庫連線和常用配置:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb()
app = Flask(__name__)
# 設定連線資料庫的URL
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:123456@127.0.0.1:3306/db_flask'
# 資料庫和模型類同步修改
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# 查詢時會顯示原始SQL語句
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)
複製程式碼
四、欄位型別
支援的資料庫型別:
型別 | 對應python中 | 說明 |
---|---|---|
Integer | int | 普通整數,一般是32位 |
SmallInteger | int | 取值範圍小的整數,一般是16位 |
BigInteger | int或long | 不限制精度的整數 |
Float | float | 浮點數 |
Numeric | decimal.Decimal | 普通整數,一般是32位 |
String | str | 變長字串 |
Text | str | 變長字串,對較長或不限長度的字串做了優化 |
Unicode | unicode | 變長Unicode字串 |
UnicodeText | unicode | 變長Unicode字串,對較長或不限長度的字串做了優化 |
Boolean | bool | 布林值 |
Date | datetime.date | 時間 |
Time | datetime.datetime | 日期和時間 |
LargeBinary | str | 二進位制檔案 |
五、約束型別
支援的資料庫約束:
選項 | 說明 |
---|---|
primary_key | 如果為True,代表表的主鍵 |
unique | 如果為True,代表這列不允許出現重複的值 |
index | 如果為True,為這列建立索引,提高查詢效率 |
nullable | 如果為True,允許有空值,如果為False,不允許有空值 |
default | 為這列定義預設值 |
六、關係選項
選項 | 說明 |
---|---|
backref | 在關係的另一模型中新增反向引用 |
primary join | 明確指定兩個模型之間使用的聯結條件 |
uselist | 如果為False,不使用列表,而使用標量值 |
order_by | 指定關係中記錄的排序方式 |
secondary | 指定多對多中記錄的排序方式 |
secondary join | 在SQLAlchemy中無法自行決定時,指定多對多關係中的二級聯結條件 |
歡迎關注我的公眾號: