這個問題 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