知識點: 一、數據庫配置 二、字段選項 三、約束字段 四、關係選擇python
在Django框架中內部已經提供ORM這樣的框架,來實現對象關係映射,方便咱們操做數據庫。若是想在Flask中也達到這樣效果,須要安裝一個第三方來支持。mysql
SQLAlchemy是一個關係型數據庫框架,它提供了高層的ORM和底層的原生數據庫的操做。flask-sqlalchemy是一個簡化了SQLAlchemy操做的flask擴展。sql
在Flask安裝:數據庫
pip install flask-sqlalchemy
複製代碼
要鏈接數據還須要安裝pymysqlflask
pip install pymysql
複製代碼
首先咱們要知道本地數據庫的帳號密碼。並須要建立一個數據庫:app
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 | 二進制文件 |
支持的數據庫約束:spa
選項 | 說明 |
---|---|
primary_key | 若是爲True,表明表的主鍵 |
unique | 若是爲True,表明這列不容許出現重複的值 |
index | 若是爲True,爲這列建立索引,提升查詢效率 |
nullable | 若是爲True,容許有空值,若是爲False,不容許有空值 |
default | 爲這列定義默認值 |
選項 | 說明 |
---|---|
backref | 在關係的另外一模型中添加反向引用 |
primary join | 明確指定兩個模型之間使用的聯結條件 |
uselist | 若是爲False,不使用列表,而使用標量值 |
order_by | 指定關係中記錄的排序方式 |
secondary | 指定多對多中記錄的排序方式 |
secondary join | 在SQLAlchemy中沒法自行決定時,指定多對多關係中的二級聯結條件 |
歡迎關注個人公衆號:code