• 利用sqlalchemy 查询视图


    这个问题 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:123456@locahost/test?charset=utf8

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

    sqlacodegen --noconstraints --outfile=models.py mysql+pymysql://sa:123456@locahost/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]
    

      

  • 相关阅读:
    1-4-Java 语言环境搭建
    1-3-JDK,JRE,JVM介绍
    1-2-java语言的特点及运行机制
    1-1-常用DOS命令与快捷键
    0-2-计算机硬件介绍
    一、JSP的3大指令Page,include,taglib
    springboot目录结构
    问题:qt按钮有时候点击没有反应
    vs2017+qt问题
    mysql问题
  • 原文地址:https://www.cnblogs.com/lzxcloud/p/11614088.html
Copyright © 2020-2023  润新知