利用sqlalchemy 查詢視圖

這個問題 google 百度 中英文搜了一上午。最新的回答仍是 7年前。最後本身靠着官方文檔的本身改出來一個比較方便的方法html

使用環境

  • python == 3.7.0
  • SQLAlchemy === 1.2.14
  • sqlacodegen === 2.0.1

生成視圖對應的ORM類

首先對於已經有數據表的項目來講能夠使用sqlacodegen來快速構建表對應的類命令以下python

sqlacodegen --noviews --noconstraints --outfile=/root/models.py mssql+pymssql://sa:123456@locahost/test?charset=utf8

--noviews 表示不會生成視圖對應的類 這裏固然要取消,因此說最終命令爲mysql

sqlacodegen --noconstraints --outfile=models.py mysql+pymysql://sa:123456@locahost/test?charset=utf8

經過命令會生成一個相似這樣的視圖對應的ORM類sql

metadata = Base.metadata
t_vw_test = Table(
    'vw_test', metadata,
    Column('Id', Integer),
    Column('Date',DateTime),
)

若是沒有數據表但願經過sqlalchemy生成數據表的話這裏沒有嘗試數組

查詢視圖

查詢視圖的方法基本和查詢普通表相同只注意 表的字段須要經過columns獲取bash

def userInfo(self, Goodsid):
    ret = self.conn.query(
        #獲取整行
        sqlaclORM.t_vw_test
        #獲取單個字段數據
        #sqlaclORM.t_vw_test.columns["Date"]
        #添加filter查詢條件
    ).filter(sqlaclORM.t_vw_test.columns["Id"] == 1).first()
    return ret

對於返回到的值只有獲取整個字段的數據的方法才能經過.對應字段獲取對應的值google

#獲取的整行數據
date = ret.Date
獲取單個需經過數組下標的方式

def userInfo(self, Goodsid):
    ret = self.conn.query(
        #獲取單個字段數據
        sqlaclORM.t_vw_test.columns["Id"]
        sqlaclORM.t_vw_test.columns["Date"]
        #添加filter查詢條件
    ).filter(sqlaclORM.t_vw_test.columns["Id"] == 1).first()
    return ret
date = ret[1]

  

原文出處:https://www.cnblogs.com/lzxcloud/p/11614088.htmlspa

相關文章
相關標籤/搜索