SQLAlchemy對數據基本操做

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

如下爲讀《深刻理解Flask》sql

對各類數據儲存策略有四種基本功能類型:添加,讀取,修改,刪除

增長數據

增長數據

讀取數據

讀取數據也許是操做種類比較複雜的功能類型

一個簡單的例子數據庫

>>> users=User.query.all()
>>> users
[<User 'test'>]

一些經常使用語句(能夠鏈式調用)flask

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)bash

page.items ##返回這一頁包含數據
page.page ##頁數
page.pages ##總頁數
page.has_prev OR page.has_next ##上一頁或者下一頁是否有數據

filter-Add: 一些複雜的SQL語句也能夠轉化session

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()
相關文章
相關標籤/搜索