加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

利用sqlalchemy 查询视图

发布时间:2020-12-20 10:27:15 所属栏目:Python 来源:网络整理
导读:这个问题 google 百度 中英文搜了一上午。最新的回答还是 7年前。最后自己靠着官方文档的自己改出来一个比较方便的方法 使用环境 python == 3.7.0 SQLAlchemy === 1.2.14 sqlacodegen === 2.0.1 生成视图对应的ORM类 首先对于已经有数据表的项目来说可以使用

这个问题 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:[email?protected]/test?charset=utf8

--noviews 表示不会生成视图对应的类 这里当然要取消,所以说最终命令为

sqlacodegen --noconstraints --outfile=models.py mysql+pymysql://sa:[email?protected]/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]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读