摘要:在用寫應(yīng)用的時(shí)候,經(jīng)常會(huì)用進(jìn)行通信,跟最接近的對(duì)象就是,有時(shí)候操作也會(huì)比操作對(duì)象更為方便,畢竟不用管數(shù)據(jù)庫(kù)的狀態(tài)了。
在用sqlAlchemy寫web應(yīng)用的時(shí)候,經(jīng)常會(huì)用json進(jìn)行通信,跟json最接近的對(duì)象就是dict,有時(shí)候操作dict也會(huì)比操作ORM對(duì)象更為方便,畢竟不用管數(shù)據(jù)庫(kù)session的狀態(tài)了。
假設(shè)數(shù)據(jù)庫(kù)里有一張post表,其中一種方法就是
p = session.query(Post).first() p.__dict__
但由于p是sqlAlchemy的對(duì)象,所以p.__dict__中會(huì)有一些其他的屬性比如_sa_instance這種我們不需要關(guān)注的
那么我們可以給model的基類加一個(gè)方法,假設(shè)models.py中原來是這樣
Base = sqlalchemy.ext.declarative.declarative_base() class Post(Base): __tablename__ = "post" id = Column(Integer, primary_key=True) title = Column(String)
那么我們可以加一個(gè)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__的信息的,可能也會(huì)出問題,不過我目前覺得這樣最方便了
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37544.html
整理了下以前學(xué)習(xí)SQLAlchemy的一些筆記,準(zhǔn)備弄成一個(gè)系列來寫,順便鞏固下自己的知識(shí),好了,廢話不多說了,讓我們開始學(xué)習(xí)SQLAlchemy吧 在學(xué)SQLAlchemy之前,我們需要了解一個(gè)叫ORM的東西, ORM,全稱(Object Relational Mapping),中文稱之為對(duì)象關(guān)系映射,通過ORM我們可以通過類的方式去操作數(shù)據(jù)庫(kù),而不用寫原生的SQL語(yǔ)句,通過把表映射成類,把行作...
摘要:幸而,提供了造物主的接口這便是,或者稱為元類。接下來我們將通過一個(gè)栗子感受的黑魔法,不過在此之前,我們要先了解一個(gè)語(yǔ)法糖。此外,在一些小型的庫(kù)中,也有元類的身影。 首發(fā)于 我的博客 轉(zhuǎn)載請(qǐng)注明出處 接觸過 Django 的同學(xué)都應(yīng)該十分熟悉它的 ORM 系統(tǒng)。對(duì)于 python 新手而言,這是一項(xiàng)幾乎可以被稱作黑科技的特性:只要你在models.py中隨便定義一個(gè)Model的子類,Dj...
摘要:核心的幾個(gè)組件模板引擎,框架,請(qǐng)求和應(yīng)答的處理還是有一些難度,但是經(jīng)過一步步的分析和編碼還是能夠完成功能。模板引擎模板引擎是另外一個(gè)比較大和的模塊。 前前后后,大概兩個(gè)月的時(shí)間,lunar這個(gè)項(xiàng)目終于達(dá)到了一個(gè)很高的完整度。 Lunar是一個(gè)Python語(yǔ)言的網(wǎng)絡(luò)框架,類似于Django,F(xiàn)lask,Tornado等當(dāng)下流行的web framework。最初有這個(gè)想法是在大二下學(xué)期,...
摘要:百度云搜索,搜各種資料搜網(wǎng)盤,搜各種資料注意數(shù)據(jù)保存的操作都是在文件里操作的將數(shù)據(jù)保存為文件是一個(gè)信號(hào)檢測(cè)導(dǎo)入圖片下載器模塊定義數(shù)據(jù)處理類,必須繼承初始化時(shí)打開文件為數(shù)據(jù)處理函數(shù),接收一個(gè),里就是爬蟲最后來的數(shù)據(jù)對(duì)象文章標(biāo)題是 【百度云搜索,搜各種資料:http://www.bdyss.cn】 【搜網(wǎng)盤,搜各種資料:http://www.swpan.cn】 注意:數(shù)據(jù)保存的操作都是在p...
摘要:你應(yīng)該使用工廠類來創(chuàng)建類,因?yàn)檫@確保了配置參數(shù)的正確性。對(duì)象包含創(chuàng)建數(shù)據(jù)庫(kù)連接所需的一切信息,它不會(huì)立即創(chuàng)建連接對(duì)象,而是會(huì)在我們進(jìn)行具體操作時(shí)創(chuàng)建。注意生產(chǎn)環(huán)境不要使用這個(gè)選項(xiàng)。關(guān)于選擇的最佳實(shí)踐使用迭代方式獲取所有值,而不是。 定義模式Defining Schema 定義ORM類的4個(gè)步驟: 繼承declarative_base()函數(shù)返回的類 定義__tablename__屬性...
閱讀 1619·2021-11-23 09:51
閱讀 1187·2019-08-30 13:57
閱讀 2272·2019-08-29 13:12
閱讀 2021·2019-08-26 13:57
閱讀 1205·2019-08-26 11:32
閱讀 986·2019-08-23 15:08
閱讀 712·2019-08-23 14:42
閱讀 3092·2019-08-23 11:41