把資料新增進資料庫後,sqlalchemy 可以通過model.query 方法對資料進行查詢。
model.query 是 db.session.query(modle) 的簡寫。
1. 使用all() 函式獲取資料庫中的所有行,並作為列表返回。
>>> users = user.query.all()
>>> users
2. 使用limit() 函式來指定希望獲取的資料總行數:
>>> users = user.query.limit(10).all()
3. 預設情況下sqlalchemy 會根據主鍵排序並返回記錄。要控制排序我們可以使用order_by函式,如下:
# 正向排序
>>> user = user.query.order_by(user.username).all()
# 反向排序
>>> user = user.query.order_by(user.username.desc()).all()
4. 只想返回一條資料,則可以使用first() 來替代 all() , **如下:
>>> user = user.query.first()
>>> user.username
admin
5. 要通過主鍵取得一行資料, 可使用 query.get() , **如下:
>>> user = user.query.get(1)
>>> user.username
admin
6. 所有函式都是可以鏈式呼叫的,也就是說可以把他們追加在一起,來修改最終的返回結果,first() 和 all() 會返回最終結果,並終止鏈式呼叫,**如下:
>>> user = user.query.order_by(user.username.desc).limit(10).first()
7. sqlalchemy還存在乙個專有方法,叫做pagination(分頁),可以用來代替 first() 和 all() 。這個方法專門設計用來實現分頁功能的。pagination方法跟first和all 方法有些不同之處,因為它返回的是乙個pagination物件,而不是資料模型物件的列表,**如下:
>>> user.query.paginate(1, 10)
# 這個物件有幾個有用的屬性
>>> page = user.query.paginate(1, 10)
# 返回這一頁包含的資料物件
>>> page.items
# 返回這一頁的頁數
>>> page.page
1# 返回總頁數
>>> page.pages
1>>> page.has_prev, page.has_next
(false, false)
# 如果不存在的話返回當前頁
>>> page.prev(), page.next()
(, )
SQLALchemy 資料庫遷移
在開發過程中,需要修改資料庫模型,而且還要在修改之後更新資料庫。最直接的方式就是刪除舊表,但這樣會丟失資料。更好的解決辦法是使用資料庫遷移框架,它可以追蹤資料庫模式的變化,然後把變動應用到資料庫中。在flask中可以使用flask migrate擴充套件,來實現資料遷移。並且整合到flask scr...
SQLAlchemy對資料基本操作
先前在這篇文章有些建立操作介紹 mysql安裝和操作 flask 以下為讀 深入理解flask 對各種資料儲存策略有四種基本功能型別 新增,讀取,修改,刪除 讀取資料也許是操作種模擬較複雜的功能型別 乙個簡單的例子 users user.query.all users 一些常用語句 可以鏈式呼叫 u...
SQLalchemy連線資料庫
1 連線命令from sqlalchemy import create engine from sqlite3 import dbapi2 as sqlite engine create engine mysql mysqldb username password hostname 3306 dat...