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