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

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

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

什么是序列化?

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

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

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

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

安裝序列化庫

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

pip install marshmallow_sqlalchemy,marshmallow

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

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

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
# 定義一個(gè)數(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、接著我們開始定義一個(gè)序列化器
from models.assetmodel import AssetModel
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
from marshmallow import EXCLUDE,validate,fields
class AssetSerializer(SQLAlchemyAutoSchema):
    class Meta:
        model = AssetModel   # 配置對(duì)應(yīng)的模型
        ordered = True       # 設(shè)置是否排序
        include_fk = True    # 是否包含外鍵
        unknown = EXCLUDE    # 未知字段序列化選項(xiàng)
        # exclude = ("name",)  # 序列化不需要的字段,反之對(duì)應(yīng)的是include

定義一個(gè)序列化器

from models.assetmodel import AssetModel
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema
from marshmallow import EXCLUDE,validate,fields
class AssetSerializer(SQLAlchemyAutoSchema):
    class Meta:
        model = AssetModel   # 配置對(duì)應(yīng)的模型
        ordered = True       # 設(shè)置是否排序
        include_fk = True    # 是否包含外鍵
        unknown = EXCLUDE    # 未知字段序列化選項(xiàng)
        # exclude = ("name",)  # 序列化不需要的字段,反之對(duì)應(yīng)的是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():
    # 獲取當(dāng)前查詢頁碼,默認(rèn)為:1
    page = request.args.get('page',1,type=int)
    # 獲取每頁顯示記錄數(shù),默認(rèn)是20
    limit = request.args.get('limit',20,type=int)
    # 獲取查詢的資產(chǎn)賬號(hào)
    account = request.args.get('account',type=int)
    # 計(jì)算當(dāng)前頁,開始的記錄編號(hào)
    start = (page - 1) * limit
    # 計(jì)算當(dāng)前頁,結(jié)束的記錄編號(hào);
    end = start + limit
    # 分頁查詢
    items = AssetModel.query.slice(start, end)
    # 獲取記錄總數(shù)
    total = AssetModel.query.count()
    # 將查詢結(jié)果進(jìn)行序列化
    items = AssetSerializer().dump(items,many=True)  # 記得帶上many=True參數(shù),否則查詢結(jié)果為空
    # 將結(jié)果轉(zhuǎn)成json結(jié)構(gòu)進(jìn)行返回
    return jsonify({
        'code': 20000,
        'msg': 'success',
        'data': {
            'items': items,
            'total':total
        }
    })

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

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

相關(guān)文章

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

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

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

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

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

    python tkinter控件布局項(xiàng)目實(shí)例

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

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

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

    python文件讀取失敗怎么處理

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

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

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

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

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

    Requests什么的通通爬不了的Python超強(qiáng)反爬蟲方案!

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

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

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

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

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

最新評(píng)論

临朐县| 石屏县| 凤阳县| 南溪县| 辰溪县| 时尚| 资溪县| 黎川县| 黄石市| 务川| 宣城市| 丰镇市| 仙居县| 库尔勒市| 盐亭县| 临夏县| 凤城市| 鸡东县| 新宁县| 南召县| 南华县| 旺苍县| 隆回县| 襄城县| 承德市| 苗栗市| 太白县| 阳朔县| 广东省| 寻乌县| 手游| 大理市| 临沂市| 任丘市| 买车| 洛川县| 文水县| 湘阴县| 彰化市| 孟州市| 额敏县|