SQLAIchemy對資料基本操作

bay1發表於2018-06-22

title: SQLAlchemy對資料基本操作 date: 2017-08-07 15:31:07 tags: [flask,SQLAlchemy,開發]

先前在這篇文章有些建立操作介紹 Mysql安裝和操作(flask)

以下為讀《深入理解Flask》

對各種資料儲存策略有四種基本功能型別:新增,讀取,修改,刪除

增加資料

增加資料

讀取資料

讀取資料也許是操作種類比較複雜的功能型別

一個簡單的例子

>>> users=User.query.all()
>>> users
[<User 'test'>]
複製程式碼

一些常用語句(可以鏈式呼叫)

User.query.all ##查詢User模型在資料庫中所有行
User.query.h2mit(5).all ##指定行數返回
User.query.first() ##返回一行資料
User.query.filter(User.id == 2).first().name
User.query.get(2).name ##以主鍵獲取,等效於上句
Post.query.paginate(2,10) ##返回2-10的物件,這個設計為了分頁
User.query.filter_by(username="test").all() ##精確過濾
User.query.filter(User.id>1).all() ##user.id大於1的
##filter引數接受任何python表示式
User.query.order_by(User.username).all() ##正向排序
User.query.order_by(User.username.desc()).all() ##反向排序
##order_by控制排序方式
複製程式碼

orderby

paginate-Add:假如命令page=Post.query.paginate(2,10)

page.items ##返回這一頁包含資料
page.page ##頁數
page.pages ##總頁數
page.has_prev OR page.has_next ##上一頁或者下一頁是否有資料
複製程式碼

filter-Add: 一些複雜的SQL語句也可以轉化

User.query.filter(
		User.username.in_(['test','test1']),
		User.password_hash==None
	).first()
User.query.filter(
		not_(User.password_hash==None)
	).first() ##擁有密碼的user
User.query.filter(
		or_(not_(User.password_hash==None),User.id>1)
	).first() ##組合呼叫
複製程式碼

SQLAlchemy中與None的比較會被當成與NULL比較

修改資料

呼叫update方法更新資料

>>> User.query.filter_by(username="test").update({
	'password_hash':'test'
	})
1
>>> db.session.commit()
複製程式碼

刪除資料

>>> user=User.query.filter_by(username="test").first()
>>> db.session.delete(user)
>>> db.session.commit()
複製程式碼

相關文章