亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

輕松將sqlAlchemy中的對象轉(zhuǎn)換為dict

Ververica / 2625人閱讀

摘要:在用寫應(yīng)用的時候,經(jīng)常會用進(jìn)行通信,跟最接近的對象就是,有時候操作也會比操作對象更為方便,畢竟不用管數(shù)據(jù)庫的狀態(tài)了。

在用sqlAlchemy寫web應(yīng)用的時候,經(jīng)常會用json進(jìn)行通信,跟json最接近的對象就是dict,有時候操作dict也會比操作ORM對象更為方便,畢竟不用管數(shù)據(jù)庫session的狀態(tài)了。

假設(shè)數(shù)據(jù)庫里有一張post表,其中一種方法就是

p = session.query(Post).first()
p.__dict__

但由于p是sqlAlchemy的對象,所以p.__dict__中會有一些其他的屬性比如_sa_instance這種我們不需要關(guān)注的

那么我們可以給model的基類加一個方法,假設(shè)models.py中原來是這樣

Base = sqlalchemy.ext.declarative.declarative_base()

class Post(Base):
    __tablename__ = "post"
    id = Column(Integer, primary_key=True)
    title = Column(String)

那么我們可以加一個to_dict()方法到Base類中

def to_dict(self):
    return {c.name: getattr(self, c.name, None) for c in self.__table__.columns}

Base.to_dict = to_dict

這樣就可以

p = session.query(Post).first()
p.to_dict()

當(dāng)然,如果model沒有和table綁定的話model里是沒有__table__的信息的,可能也會出問題,不過我目前覺得這樣最方便了

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/37544.html

相關(guān)文章

  • SQLAlchemy系列之一

    整理了下以前學(xué)習(xí)SQLAlchemy的一些筆記,準(zhǔn)備弄成一個系列來寫,順便鞏固下自己的知識,好了,廢話不多說了,讓我們開始學(xué)習(xí)SQLAlchemy吧 在學(xué)SQLAlchemy之前,我們需要了解一個叫ORM的東西, ORM,全稱(Object Relational Mapping),中文稱之為對象關(guān)系映射,通過ORM我們可以通過類的方式去操作數(shù)據(jù)庫,而不用寫原生的SQL語句,通過把表映射成類,把行作...

    Caizhenhao 評論0 收藏0
  • Python “黑魔法” 之 Meta Classes

    摘要:幸而,提供了造物主的接口這便是,或者稱為元類。接下來我們將通過一個栗子感受的黑魔法,不過在此之前,我們要先了解一個語法糖。此外,在一些小型的庫中,也有元類的身影。 首發(fā)于 我的博客 轉(zhuǎn)載請注明出處 接觸過 Django 的同學(xué)都應(yīng)該十分熟悉它的 ORM 系統(tǒng)。對于 python 新手而言,這是一項(xiàng)幾乎可以被稱作黑科技的特性:只要你在models.py中隨便定義一個Model的子類,Dj...

    LeoHsiun 評論0 收藏0
  • Lunar, 一個Python網(wǎng)絡(luò)框架的實(shí)現(xiàn)

    摘要:核心的幾個組件模板引擎,框架,請求和應(yīng)答的處理還是有一些難度,但是經(jīng)過一步步的分析和編碼還是能夠完成功能。模板引擎模板引擎是另外一個比較大和的模塊。 前前后后,大概兩個月的時間,lunar這個項(xiàng)目終于達(dá)到了一個很高的完整度。 Lunar是一個Python語言的網(wǎng)絡(luò)框架,類似于Django,F(xiàn)lask,Tornado等當(dāng)下流行的web framework。最初有這個想法是在大二下學(xué)期,...

    邱勇 評論0 收藏0
  • 21、 Python快速開發(fā)分布式搜索引擎Scrapy精講—爬蟲數(shù)據(jù)保存

    摘要:百度云搜索,搜各種資料搜網(wǎng)盤,搜各種資料注意數(shù)據(jù)保存的操作都是在文件里操作的將數(shù)據(jù)保存為文件是一個信號檢測導(dǎo)入圖片下載器模塊定義數(shù)據(jù)處理類,必須繼承初始化時打開文件為數(shù)據(jù)處理函數(shù),接收一個,里就是爬蟲最后來的數(shù)據(jù)對象文章標(biāo)題是 【百度云搜索,搜各種資料:http://www.bdyss.cn】 【搜網(wǎng)盤,搜各種資料:http://www.swpan.cn】 注意:數(shù)據(jù)保存的操作都是在p...

    Alex 評論0 收藏0
  • Essential SQLAlchemy2th學(xué)習(xí)筆記之ORM模塊

    摘要:你應(yīng)該使用工廠類來創(chuàng)建類,因?yàn)檫@確保了配置參數(shù)的正確性。對象包含創(chuàng)建數(shù)據(jù)庫連接所需的一切信息,它不會立即創(chuàng)建連接對象,而是會在我們進(jìn)行具體操作時創(chuàng)建。注意生產(chǎn)環(huán)境不要使用這個選項(xiàng)。關(guān)于選擇的最佳實(shí)踐使用迭代方式獲取所有值,而不是。 定義模式Defining Schema 定義ORM類的4個步驟: 繼承declarative_base()函數(shù)返回的類 定義__tablename__屬性...

    JasonZhang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<