在 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...