摘要:在用寫應(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
整理了下以前學(xué)習(xí)SQLAlchemy的一些筆記,準(zhǔn)備弄成一個系列來寫,順便鞏固下自己的知識,好了,廢話不多說了,讓我們開始學(xué)習(xí)SQLAlchemy吧 在學(xué)SQLAlchemy之前,我們需要了解一個叫ORM的東西, ORM,全稱(Object Relational Mapping),中文稱之為對象關(guān)系映射,通過ORM我們可以通過類的方式去操作數(shù)據(jù)庫,而不用寫原生的SQL語句,通過把表映射成類,把行作...
摘要:幸而,提供了造物主的接口這便是,或者稱為元類。接下來我們將通過一個栗子感受的黑魔法,不過在此之前,我們要先了解一個語法糖。此外,在一些小型的庫中,也有元類的身影。 首發(fā)于 我的博客 轉(zhuǎn)載請注明出處 接觸過 Django 的同學(xué)都應(yīng)該十分熟悉它的 ORM 系統(tǒng)。對于 python 新手而言,這是一項(xiàng)幾乎可以被稱作黑科技的特性:只要你在models.py中隨便定義一個Model的子類,Dj...
摘要:核心的幾個組件模板引擎,框架,請求和應(yīng)答的處理還是有一些難度,但是經(jīng)過一步步的分析和編碼還是能夠完成功能。模板引擎模板引擎是另外一個比較大和的模塊。 前前后后,大概兩個月的時間,lunar這個項(xiàng)目終于達(dá)到了一個很高的完整度。 Lunar是一個Python語言的網(wǎng)絡(luò)框架,類似于Django,F(xiàn)lask,Tornado等當(dāng)下流行的web framework。最初有這個想法是在大二下學(xué)期,...
摘要:百度云搜索,搜各種資料搜網(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...
摘要:你應(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__屬性...
閱讀 1690·2021-11-23 09:51
閱讀 1232·2019-08-30 13:57
閱讀 2326·2019-08-29 13:12
閱讀 2067·2019-08-26 13:57
閱讀 1260·2019-08-26 11:32
閱讀 1040·2019-08-23 15:08
閱讀 790·2019-08-23 14:42
閱讀 3137·2019-08-23 11:41