SQLAlchemy 讀取資料的方法

2021-10-01 05:43:25 字數 1559 閱讀 9879

把資料新增進資料庫後,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...