什麼是模型
**模型,是根據資料庫中表的結構來建立出來的class。每一張表到程式語言中就是乙個class,表中的每乙個列,到程式語言中就是class中的乙個屬性。
orm的三大特徵
1.資料表(table) 到 類(class) 的對映
資料庫中的每一張表 對應 到程式語言中,都有乙個類
在orm中
允許將資料表 自動 生成乙個類
也允許將類 自動 生成一張表
2.資料型別的對映
將資料庫表中的字段以及資料型別 對應到 程式語言中類的屬性
在orm中
允許將表中的字段和資料型別自動對映到程式語言中
也允許將類中的屬性和型別也對映到資料庫表中
3.關係對映
將資料庫中表之間的關係 對應 到程式語言中類之間的關係
資料庫表之間的關係:
一對一,一對多,多對多
orm的優點
1.提高了開發的效率
2.可以省略龐大的資料訪問層,即便不用sql編碼也能完成對資料的crud操作
3.定義模型
資料庫 和 框架的配置
1.安裝 sqlalchemy
pip3 install sqlalchemy
pip3 install flask-sqlalchemy
2.建立資料庫
create database flask default charset utf8 collate utf8_general_ci;
3.配置資料庫
from flask import flask
#將sqlalchemy匯入進來
from flask_sqlalchmey import sqlalchemy
#建立sqlalchemy的例項
#db是sqlalchemy的例項,表示程式正在使用的資料庫,同時也獲得了sqlalchemy中的所有功能
if __name__ == "__main__":
定義模型
模型:資料庫中的表在程式語言中的體現,其本質就是乙個python 的類(可稱為:模型類 或 實體類)。類中的屬性要與資料庫表中的列相對應
語法:
class modelname(db.model):
__tablename__ = "tablename"
column_name = db.column(db.type,options)
1.modelname:定義模型類名稱,根據表名設定
2.tablename:對映到資料庫中表的名字
3.column_name:屬性名,對映到表中列的名字
4.db.type:對映到列的資料型別
5.options:列選項
db.type 列型別如下:
型別名 python型別 說明
integer int 普通整數,32位
samllinteger int 小範圍整數,通常16位
biginteger int或long 不限精度的整數
float float 浮點數
numeric decimal.decimal 定點數
string str 變長字串
text str 變長字串,優化
unicode unicode 變長unicode字串
unicodetext unicode 優化後的變長unicode
boolean bool 布林值
date datetime.date 日期
time datetime.time 時間
datetime datetime.datetime 日期和時間
options 列選項
選項名 說明
primary_key 設定為true則表示該列為主鍵
unique 設定為true則表示該列的值唯一
index 設定為true則表示該列要建立索引
nullable 設定為true則表示該列允許為空
default 為該列定義預設值
1.基於 db.session
1.db.session.query()
引數:實體,多個實體,實體中的屬性
返回值:basequery()
1.查詢執行函式
1.all()
2.first()
3.first_or_404()
4.count()
2.查詢過濾器
1.filter()
2.filter_by()
3.limit()
limit().offset()
4.order_by()
5.group_by()
2.基於 models
models.query.查詢過濾器().查詢執行函式()
刪除 :db.session.delete(model)
model : 要刪除的實體物件
修改 :
1.查 2.改 3.儲存
3.關係對映
teacher :id,tname,tage (多)
course : id,cname (一)
一名老師只能教一門課
一門課可以由多個老師來教
資料庫中的實現:
在"多"表中增加外來鍵引用自"一"表中主鍵
class course(db.model):
__tablename__ = 'course'
id = db.column()
...# teacher類中會存在乙個隱式屬性 :course
teachers = db.relationship('teacher',backref='course',lazy='dynamic')
class teacher(db.model):
__tablename__ = 'teacher'
id = db.column()
tname = db.column()
.. course_id = db.column(db.integer,db.foreignkey('course.id'))
flask框架入門
前提是安裝python以及安裝flask 安裝flask 安裝教程 按照裡面講的,python3可能會出現版本不相容的問題,本來已經安裝了python3,這裡還是再安裝一下python2,防止之後踩一些奇怪的坑。這裡建議使用anaconda來進行python版本切換,之前使用覺得還是挺方便的,就是前...
Python的Flask框架入門 Ubuntu
全文請見tuts code an introduction to python s flask framework flask是python乙個小而強大的web框架。學起來簡單,用起來也容易,能夠幫你在很短的時間內建立web應用。這篇文章中,我們會建立乙個簡單的web應用,包含兩個靜態頁面和少許動態...
DRF框架入門 二
request和response response類 三種基本序列化字段方式 from rest framework import serializers from goods.models import goodsinfo 定義一些序列號程式 class goodsinfoserializer s...