如何使用SQLAlchemy进行视图查询操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计555个文字,预计阅读时间需要3分钟。
这个问题主要涉及使用Google、百度搜索最新答案,以及如何通过Python环境(Python 3.7.0,SQLAlchemy 1.2.14,sqlacodegen 2.0.1)生成视图。以下是简化的开头内容:
这个问题涉及使用Google、百度搜索最新的答案,以及如何利用Python环境(Python 3.7.0,SQLAlchemy 1.2.14,sqlacodegen 2.0.1)生成视图。以下是解决方案:
这个问题 google 百度 中英文搜了一上午。最新的回答还是 7年前。最后自己靠着官方文档的自己改出来一个比较方便的方法
使用环境
- python == 3.7.0
- SQLAlchemy === 1.2.14
- sqlacodegen === 2.0.1
生成视图对应的ORM类
首先对于已经有数据表的项目来说可以使用sqlacodegen来快速构建表对应的类命令如下
sqlacodegen --noviews --noconstraints --outfile=/root/models.py mssql+pymssql://sa:[emailprotected]/test?charset=utf8
--noviews 表示不会生成视图对应的类 这里当然要取消,所以说最终命令为
sqlacodegen --noconstraints --outfile=models.py mysql+pymysql://sa:[emailprotected]/test?charset=utf8
通过命令会生成一个类似这样的视图对应的ORM类
metadata = Base.metadata t_vw_test = Table( ‘vw_test‘, metadata, Column(‘Id‘, Integer), Column(‘Date‘,DateTime), )
如果没有数据表希望通过sqlalchemy生成数据表的话这里没有尝试
查询视图
查询视图的方法基本和查询普通表相同只注意 表的字段需要通过columns获取
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
对于返回到的值只有获取整个字段的数据的方法才能通过.对应字段获取对应的值
#获取的整行数据 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]
本文共计555个文字,预计阅读时间需要3分钟。
这个问题主要涉及使用Google、百度搜索最新答案,以及如何通过Python环境(Python 3.7.0,SQLAlchemy 1.2.14,sqlacodegen 2.0.1)生成视图。以下是简化的开头内容:
这个问题涉及使用Google、百度搜索最新的答案,以及如何利用Python环境(Python 3.7.0,SQLAlchemy 1.2.14,sqlacodegen 2.0.1)生成视图。以下是解决方案:
这个问题 google 百度 中英文搜了一上午。最新的回答还是 7年前。最后自己靠着官方文档的自己改出来一个比较方便的方法
使用环境
- python == 3.7.0
- SQLAlchemy === 1.2.14
- sqlacodegen === 2.0.1
生成视图对应的ORM类
首先对于已经有数据表的项目来说可以使用sqlacodegen来快速构建表对应的类命令如下
sqlacodegen --noviews --noconstraints --outfile=/root/models.py mssql+pymssql://sa:[emailprotected]/test?charset=utf8
--noviews 表示不会生成视图对应的类 这里当然要取消,所以说最终命令为
sqlacodegen --noconstraints --outfile=models.py mysql+pymysql://sa:[emailprotected]/test?charset=utf8
通过命令会生成一个类似这样的视图对应的ORM类
metadata = Base.metadata t_vw_test = Table( ‘vw_test‘, metadata, Column(‘Id‘, Integer), Column(‘Date‘,DateTime), )
如果没有数据表希望通过sqlalchemy生成数据表的话这里没有尝试
查询视图
查询视图的方法基本和查询普通表相同只注意 表的字段需要通过columns获取
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
对于返回到的值只有获取整个字段的数据的方法才能通过.对应字段获取对应的值
#获取的整行数据 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]

