python flaskweb學習筆記二

2021-09-02 22:39:14 字數 3558 閱讀 7823

在 orm 中,模型一般是乙個 python 類,類中的屬性對應資料庫表中的列。

最常用的sqlalchemy列型別

型別名 python型別

說  明

integer

int普通整數,一般是 32 位

smallinteger

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

日期和時間

interval

datetime.timedelta

時間間隔

enum

str一組字串

pickletype

任何 python 物件 自動使用 pickle 序列化

largebinary

str二進位制檔案

hello.py:定義 role 和 user 模型

class role(db.model):

__tablename__ = 'roles'

id = db.column(db.integer, primary_key=true)

name = db.column(db.string(64), unique=true)

def __repr__(self):

return '' % self.name

class user(db.model):

__tablename__ = 'users'

id = db.column(db.integer, primary_key=true)

username = db.column(db.string(64), unique=true, index=true)

def __repr__(self):

return '' % self.username

最常使用的sqlalchemy列選項

選項名 說  明

primary_key 如果設為 true ,這列就是表的主鍵

unique 如果設為 true ,這列不允許出現重複的值

index 如果設為 true ,為這列建立索引,提公升查詢效率

nullable 如果設為 true ,這列允許使用空值;如果設為 false ,這列不允許使用空值

default 為這列定義預設值

常用的sqlalchemy關係選項

選項名 說  明

backref 在關係的另乙個模型中新增反向引用

primaryjoin 明確指定兩個模型之間使用的聯結條件。只在模稜兩可的關係中需要指定

lazy 指定如何載入相關記錄。可選值有 select (首次訪問時按需載入)、 immediate (源物件加

載後就載入)、 joined (載入記錄,但使用聯結)、 subquery (立即載入,但使用子查詢),

noload (永不載入)和 dynamic (不載入記錄,但提供載入記錄的查詢)

hello.py:關係

class role(db.model):

# ...

users = db.relationship('user', backref='role')

class user(db.model):

# ...

role_id = db.column(db.integer, db.foreignkey('roles.id'))

sqlalchemy 為很多資料庫引擎提供抽象層

資料庫會話也稱為事務

資料庫會話能保證資料庫的一致性。提交操作使用原子方式把會話中的物件全部寫入資料

庫。資料庫會話也可 回滾 。呼叫 db.session.rollback() 後,新增到資料庫會話

中的所有物件都會還原到它們在資料庫時的狀態。

常用的sqlalchemy查詢過濾器

過濾器說  明

filter()

把過濾器新增到原查詢上,返回乙個新查詢

filter_by()

把等值過濾器新增到原查詢上,返回乙個新查詢

limit()

使用指定的值限制原查詢返回的結果數量,返回乙個新查詢

offset()

偏移原查詢返回的結果,返回乙個新查詢

order_by()

根據指定條件對原查詢結果進行排序,返回乙個新查詢

group_by()

根據指定條件對原查詢結果進行分組,返回乙個新查詢

最常使用的sqlalchemy查詢執行函式

方 法說  明

all()

以列表形式返回查詢的所有結果

first()

返回查詢的第乙個結果,如果沒有結果,則返回 none

first_or_404()

返回查詢的第乙個結果,如果沒有結果,則終止請求,返回 404 錯誤響應

get()

返回指定主鍵對應的行,如果沒有對應的行,則返回 none

get_or_404()

返回指定主鍵對應的行,如果沒找到指定的主鍵,則終止請求,返回 404 錯誤響應

count()

返回查詢結果的數量

paginate()

返回乙個 paginate 物件,它包含指定範圍內的結果

def index():

form = nameform()

if form.validate_on_submit():

user = user.query.filter_by(username=form.name.data).first()

if user is none:

user = user(username = form.name.data)

db.session.add(user)

session['known'] = false

else:

session['known'] = true

session['name'] = form.name.data

form.name.data = ''

return redirect(url_for('index'))

return render_template('index.html',

form = form, name = session.get('name'),

known = session.get('known', false))

Python Flask Web伺服器框架學習

知識點小總結 資料庫安裝總結 flask框架快速上手 www.blog.csdn.net mditor 則在後端伺服器上處理的函式為 可以想象,路由就是伺服器上後台 對頁面的控制標誌路徑 defdealfunction 處理該頁面的 應用def login myform loginform requ...

python Flask Web開發入門(一)

原文 1.如何用pip安裝python包 demo 如何安裝flask 2.乙個簡單的demo 大多數python包都使用pip實用工具安裝,使用pyvenv建立的虛擬環境會自動安裝pip。1.使用pip安裝flask 其它python包同理 if name main 從demo中學習路由 修飾器 ...

Python Flask WEB框架的入門方法

encoding utf 8 from flask import flask from flask import render template from flask import jsonify from flask import request from flask import make re...