利用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:[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]

  

原文地址:https://www.cnblogs.com/lzxcloud/p/11614088.html

时间: 2024-11-01 13:32:28

利用sqlalchemy 查询视图的相关文章

转发:使用sql命令查询视图中所有引用的基础表

转自:使用sql命令查询视图中所有引用的基础表 使用sql命令查询视图中所有引用的基础表 之前有写过如何利用sql查询视图中所有引用的表发现这个方法并不能查出视图中所有的基础表,如果视图中有嵌套视图就会有问题,因为目录视图sys.sql_dependencies并不包含所有的引用实体.后面发现在sql2008及以后的版本中推出的sys.sql_expression_dependencies视图解决了这一问题,所以重新写了段sql,用来查询视图中所有引用的基础表,包括嵌套视图中的基础表.这个有什么

Python与数据库[2] -> 关系对象映射/ORM -> 利用 sqlalchemy 实现关系表查询功能

利用 sqlalchemy 实现关系表查询功能 下面的例子将完成一个通过关系表进行查询的功能,示例中的数据表均在MySQL中建立,建立过程可以使用 SQL 命令或编写 Python 适配器完成. 示例中用到的表主要有3张,一张personInfo个人信息表,一张account_store账号信息表,以及一张person_account_rel的个人信息与账号关系表. 示例中将会通过已知的人物年龄和id通过个人信息表查出个人姓名(仅为参考示例,请忽略怪异的查找逻辑 :) ),随后根据关系表得到的人

EF查询视图只得到一条记录

1.出错结果:数据库表视图有多条数据,在使用EF框架进行查询时却只得到一条数据(注:拦截EF得到的sql语句在数据库进行查询并没有任务问题). 2.出错原因:该视图中没有ID或者主键,EF查询时进行反射默认都是同一条数据. 3.总结:EF框架查询视图时需要注意加入ID或者主键 以上仅是个人简单分析.

利用SQLServer查询分析器获取存储过程的返回值,检查测试存储过程

1.存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况(1)如果通过查询分析器执行该存储过程,在显示栏中如果有影响的行数,则影响几行count就是几(2)如果通过查询分析器执行该存储过程,在显示栏中如果显示'命令已成功完成.'则count = -1;在显示栏中如果有查询结果,则count = -1总结:A.ExecuteNonQuery()该方法只返回影响的行数,如果没有影响

jdbc增删改查,利用反射查询

整理自http://blog.csdn.net/yanzi1225627/article/details/26950615,谢谢作者! 本文我的爱点是: 1.利用反射实现数据库数据查询 2.编写一个sql语句,其中的参数用?来代替,然后将参数写到List里 例如使用例子: 1 String sql = "delete from userinfo where username = ?"; 2 List<Object> params = new ArrayList<Obj

meta标签、利用媒体查询 link不同的CSS文件

利用媒体查询 link不同的CSS文件:<link rel="stylesheet" media="screen and (min-width:1px) and (max-width:500px)" href="/css/d1.css" /><link rel="stylesheet" media="screen and (min-width:500px)" href="/css

查询视图对应的基表名以及视图字段和对应的基表字段名

ALTER View [dbo].[ViewSchema] as select v.name ViewName,t.name TableName,vc.name ViewCol,tc.name TableCol from sysdepends d, sysobjects v, syscolumns vc, sysobjects t, syscolumns tc where objectproperty(d.id,'IsView')=1 and d.id=v.id and v.id=vc.id a

spring jpa查询视图

这段时间在项目中用到的spring+springmvc+hibernate+jpa框架,今天遇到一个问题:如何用原装的jpa查询视图? 使用过jpa的朋友都知道,这是个很难受的问题,我在网上找了半天也没找到简单的答案,大部分都是先建立视图有关的表和类做关联,然后再手写SQL,很是麻烦,而且最要命的是,数据库表不是我建的,表很多,很乱,后来求助大佬,得到一个解决办法: 1.使用原生SQL解决,即使用EntityManager类,然后用object[]数组接收: 2.由于做表和实体类的关联,就没有办

子查询|视图事务

子查询|视图|事务 一.子查询 增:insert into 表 select子查询 删:delete from 表 条件是select子查询(表不能与delete表相同) 查:select 字段 from 表 条件是select子查询 改:update 表 set 字段=值 条件是select子查询(表不能与update表相同) # 数据来源:在单表emp下 # 子查询:将一条查询sql的结果作为另一条sql的条件 # 思考:每个部门最高薪资的那个人所有信息 # 子查询的sql select d