最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

flask數(shù)據(jù)庫序列化操作實例探究

 更新時間:2024年01月23日 10:20:02   作者:weibin?python學習與大數(shù)據(jù)分析  
這篇文章主要為大家介紹了flask數(shù)據(jù)庫序列化操作實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

什么是序列化?

在ORM(對象關系映射)中,序列化是一個將數(shù)據(jù)庫中的數(shù)據(jù)模型對象轉(zhuǎn)化為適合在網(wǎng)絡傳輸或存儲(如JSON、XML等格式)的過程。簡單來說,就是將數(shù)據(jù)庫表的一行記錄轉(zhuǎn)換為易于傳輸和理解的數(shù)據(jù)結(jié)構(gòu)。

序列化的作用就在于此:它能夠?qū)⒁粋€或多個數(shù)據(jù)庫模型對象轉(zhuǎn)換成JSON字符串或其他可傳輸格式。這個過程中,ORM框架提供的序列化功能會遍歷模型對象的所有屬性,并按照指定的規(guī)則(如日期時間格式、字段篩選等)進行轉(zhuǎn)換。

Marshmallow是Python中廣泛使用的序列化與驗證庫,而SQLAlchemyAutoSchema則是Marshmallow的一個擴展,專門用于處理SQLAlchemy定義的模型。當我們的數(shù)據(jù)模型通過SQLAlchemy定義后,就可以借助SQLAlchemyAutoSchema將其映射為可序列化的schema。

好了,話不多說,直接上代碼:

安裝序列化庫

首先我們需要安裝序列化庫

pip install marshmallow_sqlalchemy,marshmallow

定義一個數(shù)據(jù)庫模型

我們需要先定義一個數(shù)據(jù)庫模型(大家可以把看成是一張數(shù)據(jù)庫表結(jié)構(gòu))

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
# 定義一個數(shù)據(jù)庫表結(jié)構(gòu)的數(shù)據(jù)模型
class AssetModel(db.Model):
    __tablename__ = 'asset'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    init_date = db.Column(db.String(30), nullable=False)
    username = db.Column(db.String(20), nullable=False)
    account = db.Column(db.String(20), nullable=False)
    update_time = db.Column(db.DateTime, nullable=False)
    def __init__(self, username, init_date,account, update_time):
        self.username = username
        self.init_date = init_date
        self.account = account
        self.update_time = str(update_time)
3、接著我們開始定義一個序列化器
from models.assetmodel import AssetModel
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
from marshmallow import EXCLUDE,validate,fields
class AssetSerializer(SQLAlchemyAutoSchema):
    class Meta:
        model = AssetModel   # 配置對應的模型
        ordered = True       # 設置是否排序
        include_fk = True    # 是否包含外鍵
        unknown = EXCLUDE    # 未知字段序列化選項
        # exclude = ("name",)  # 序列化不需要的字段,反之對應的是include

定義一個序列化器

from models.assetmodel import AssetModel
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
from marshmallow import EXCLUDE,validate,fields
class AssetSerializer(SQLAlchemyAutoSchema):
    class Meta:
        model = AssetModel   # 配置對應的模型
        ordered = True       # 設置是否排序
        include_fk = True    # 是否包含外鍵
        unknown = EXCLUDE    # 未知字段序列化選項
        # exclude = ("name",)  # 序列化不需要的字段,反之對應的是include

序列化器的使用

from models.assetmodel import AssetModel,AssetSerializer
testdata_blueprint = Blueprint('testdata', __name__, url_prefix='/TestData')
@testdata_blueprint.route('/testdata', methods=['GET'])
def get_testdata_list():
    # 獲取當前查詢頁碼,默認為:1
    page = request.args.get('page',1,type=int)
    # 獲取每頁顯示記錄數(shù),默認是20
    limit = request.args.get('limit',20,type=int)
    # 獲取查詢的資產(chǎn)賬號
    account = request.args.get('account',type=int)
    # 計算當前頁,開始的記錄編號
    start = (page - 1) * limit
    # 計算當前頁,結(jié)束的記錄編號;
    end = start + limit
    # 分頁查詢
    items = AssetModel.query.slice(start, end)
    # 獲取記錄總數(shù)
    total = AssetModel.query.count()
    # 將查詢結(jié)果進行序列化
    items = AssetSerializer().dump(items,many=True)  # 記得帶上many=True參數(shù),否則查詢結(jié)果為空
    # 將結(jié)果轉(zhuǎn)成json結(jié)構(gòu)進行返回
    return jsonify({
        'code': 20000,
        'msg': 'success',
        'data': {
            'items': items,
            'total':total
        }
    })

通過上面的內(nèi)容,不知道大家有沒有留意到,我們根據(jù)查詢條件查詢數(shù)據(jù)庫表然后將數(shù)據(jù)記錄返回,這個過程我們并沒有寫查詢的sql語句,如select * from table_name where account='abc';這就是ORM框架中的序列化的作用,可以幫我們方便快捷地獲取到想要查詢的數(shù)據(jù),并且不需要我們手動將sql查詢結(jié)果整理成列表等數(shù)據(jù)結(jié)構(gòu),這大大提高了我們的開發(fā)效率。

以上就是flask數(shù)據(jù)庫序列化操作實例探究的詳細內(nèi)容,更多關于flask數(shù)據(jù)庫序列化操作的資料請關注腳本之家其它相關文章!

相關文章

  • 使用python設置Excel工作表網(wǎng)格線的隱藏與顯示

    使用python設置Excel工作表網(wǎng)格線的隱藏與顯示

    Excel表格界面的直觀性很大程度上得益于表格中的網(wǎng)格線設計,這些線條幫助用戶精確對齊數(shù)據(jù),清晰劃分單元格,本文將介紹如何使用Python設置隱藏或顯示Excel工作表的網(wǎng)格線,實現(xiàn)自動話及批量處理,感興趣的朋友可以參考下
    2024-06-06
  • 一文教你徹底解決Python包下載慢問題

    一文教你徹底解決Python包下載慢問題

    在利用python中,我們經(jīng)常需要使用到各種各樣的庫。其中,pip是我們常用的安裝工具,一般情況下我們基本上是直接pip方法安裝第三方包,下面這篇文章主要給大家介紹了關于如何徹底解決Python包下載慢問題的相關資料,需要的朋友可以參考下
    2023-05-05
  • python tkinter控件布局項目實例

    python tkinter控件布局項目實例

    這篇文章主要介紹了python tkinter控件布局項目實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Python腳本實現(xiàn)統(tǒng)計與可視化COCO數(shù)據(jù)集標注信息

    Python腳本實現(xiàn)統(tǒng)計與可視化COCO數(shù)據(jù)集標注信息

    COCO(Common Objects in Context)是目前計算機視覺領域最流行的數(shù)據(jù)集之一,下面我們就來看看如何使用Python腳本實現(xiàn)統(tǒng)計與可視化COCO數(shù)據(jù)集標注信息吧
    2026-03-03
  • python文件讀取失敗怎么處理

    python文件讀取失敗怎么處理

    在本篇文章里小編給大家分享的是關于python文件讀取失敗怎么處理的相關文章,需要的朋友們參考下。
    2020-06-06
  • python web.py開發(fā)httpserver解決跨域問題實例解析

    python web.py開發(fā)httpserver解決跨域問題實例解析

    這篇文章主要介紹了python web.py開發(fā)httpserver解決跨域問題實例解析,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Python實現(xiàn)圖片轉(zhuǎn)字符畫的示例

    Python實現(xiàn)圖片轉(zhuǎn)字符畫的示例

    本篇文章主要介紹了Python實現(xiàn)圖片轉(zhuǎn)字符畫的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Requests什么的通通爬不了的Python超強反爬蟲方案!

    Requests什么的通通爬不了的Python超強反爬蟲方案!

    今天帶大家學習Requests什么的通通爬不了的Python超強反爬蟲方案,文中有非常詳細的圖文介紹及代碼示例,對正在學習python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Python中優(yōu)雅地處理JSON5文件的方法詳解

    Python中優(yōu)雅地處理JSON5文件的方法詳解

    JSON5 是 JSON 的一個超集,通過引入部分 ECMAScript 5.1 的特性來擴展 JSON 的語法,以減少 JSON 格式的某些限制,同時,保持兼容現(xiàn)有的 JSON 格式,本文給大家介紹了Python中如何優(yōu)雅地處理 JSON5 文件,需要的朋友可以參考下
    2024-04-04
  • Python打造自己的專屬命令行工具

    Python打造自己的專屬命令行工具

    本文主要介紹了Python打造自己的專屬命令行工具,使得在類Unix系統(tǒng)和Windows系統(tǒng)中,可以通過直接輸入自定義命令來運行腳本,具有一定的參考價值,感興趣的可以了解一下
    2025-05-05

最新評論

方山县| 汾西县| 治县。| 大竹县| 文登市| 南投县| 防城港市| 二手房| 东源县| 应用必备| 南雄市| 彭阳县| 临江市| 河东区| 龙江县| 枝江市| 香格里拉县| 奉节县| 子洲县| 南投县| 永吉县| 鄯善县| 沈丘县| 清丰县| 团风县| 怀柔区| 郴州市| 博客| 射洪县| 集安市| 正安县| 文山县| 曲松县| 镇巴县| 陇川县| 齐河县| 桦甸市| 黄冈市| 改则县| 买车| 浦江县|