Flask框架從入門到精通之模型資料庫配置(十一)

〆 小源。發表於2019-04-30

知識點: 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中無法自行決定時,指定多對多關係中的二級聯結條件

歡迎關注我的公眾號:

image

相關文章