Sqlalchemy的查询方式有很多种,例如可以查询全部,可以查询符合条件的,可以查询指定字段的。那么这么多种查询,返回的结果是不是一样的呢?作本文记录分析结果。

Sql_forengin.py

 #coding:utf-

 from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,DATE,ForeignKey #导入外键
from sqlalchemy.orm import relationship #创建关系 engine = create_engine("mysql+mysqldb://root:123@localhost:3306/test",
encoding="utf-8") Base = declarative_base() #生成orm基类 class Student(Base):
__tablename__ = "student"
id = Column(Integer,primary_key=True)
name = Column(String(),nullable=False)
register_day = Column(DATE,nullable=False) #def __repr__(self):
# return "<{0} name:{1}>".format(self.id,self.name) class StudyRecord(Base):
__tablename__ = "study_record"
id = Column(Integer,primary_key=True)
day = Column(Integer,nullable=False)
status = Column(String(),nullable=False)
stu_id = Column(Integer,ForeignKey("student.id"))
student = relationship("Student",backref="my_study_record") #def __repr__(self):
# return "<{0} name:{1} stu_id:{2}>".format(self.student.name,self.day,self.stu_id) Base.metadata.create_all(engine) #创建表

select.py

 #coding:utf-

 from sqlalchemy.orm import  sessionmaker
from sqlalchemy import create_engine
from sql_foreign import Student,StudyRecord engine = create_engine("mysql+mysqldb://root:123@localhost:3306/test",)
Session_class = sessionmaker(bind=engine)
session = Session_class() stu_obj = session.query(StudyRecord).filter_by(id = ).first()
#stu_obj = session.query(StudyRecord.id,StudyRecord.day).all()
#stu_obj = session.query(StudyRecord).all()
#print(stu_obj.student.id) #获取study_record的数据
#print(stu_obj.student.name) #获取study_record的数据
#print(stu_obj.student.register_day) #获取study_record的数据 print stu_obj
print type(stu_obj)

数据库数据

一、查询出所有

 stu_obj = session.query(StudyRecord).all()

分析:使用.all()查询出来的就是一个list列表。在这个列表中存储的是对象class。

二、查询符合条件

查询符合条件的第一个

stu_obj = session.query(StudyRecord).filter_by(id = ).first()

分析:查询first返回为一个对象

查询所有符合条件

stu_obj = session.query(StudyRecord).filter_by(day = ).all()

分析:查询出符合添加的所有的值返回为一个list列表,列表中为所有的对象

查询结果没有指定所有或者第一个

stu_obj = session.query(StudyRecord).filter_by(day = )

分析:查询出来的是一个对象,不过返回值很特别,是一个查询语句

三、查询指定的字段

stu_obj = session.query(StudyRecord.id,StudyRecord.day).all()

分析:查询出来的是一个列表,列表中是对象。虽然很像元祖,但确实是对象。

四、查询的返回结果为唯一一个

stu_obj = session.query(StudyRecord).filter_by(day = ).one()

分析:返回值为一个对象

总结:sqlqlchemy查询的结果一定是对象,根据返回值的不同可能会有一定差异。

sqlalchemy查询结果类型简析的更多相关文章

  1. 基于DFA敏感词查询的算法简析

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要对敏感词做一个过滤,首先有几个方案可以选择: a.直 ...

  2. mysql体系结构和sql查询执行过程简析

    一: mysql体系结构 1)Connectors 不同语言与 SQL 的交互 2)Management Serveices & Utilities 系统管理和控制工具 备份和恢复的安全性,复 ...

  3. MySQL 慢查询日志配置与简析

    MySQL慢查询日志配置与简析 By:授客 QQ:1033553122   <1> 查看是否开启慢查询日志 SHOW VARIABLES LIKE 'slow%'; 说明: a. 如果sl ...

  4. WebGIS中基于AGS的画圆查询简析以及通过Polygon来构造圆的算法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 某个项目需求中需要在前端进行画圆查询,将圆范围上的多边形要素 ...

  5. DNS使用的是TCP协议还是UDP协议简析

    DNS使用的是TCP协议还是UDP协议简析   DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情况 ...

  6. Linux VFS机制简析(一)

    Linux VFS机制简析(一) 本文主要基于Linux内核文档,简单分析Linux VFS机制,以期对编写新的内核文件系统(通常是给分布式文件系统编写内核客户端)的场景有所帮助. 个人渊源 切入正文 ...

  7. OpenStack之Glance源码简析

    Glance简介 OpenStack镜像服务器是一套虚拟机镜像发现.注册.检索. glance架构图: Glance源码结构: glance/api:主要负责接收响应镜像管理命令的Restful请求, ...

  8. ASCII、Unicode、UTF-8、UTF-16、GBK、GB2312、ANSI等编码方式简析

    ASCII.Unicode.UTF-8.UTF-16.GBK.GB2312.ANSI等编码方式简析 序言 从各种字节编码方法中,能看到那个计算机发展的洪荒时期的影子. ASCII ASCII码有标准A ...

  9. <摘自>飞:jxl简析2 [ http://www.emlog.net/fei ]

    [<摘自>飞:jxl简析:http://www.emlog.net/fei] (二)应用 在进行实践前 , 我们需要对 excel 有一个大致的了解 ,excel 文件由一个工作簿 (Wo ...

随机推荐

  1. (一)走进Metasploit渗透测试框架

    渗透测试的流程 渗透测试是一种有目的性的,针对目标机构计算机系统安全的检测评估方法,渗透测试的主要目的是改善目标机构的安全性.渗透测试各个阶段的基本工作: 1.前期交互阶段 在这个阶段,渗透测试工程师 ...

  2. Django REST framework 中文文档

    Django REST framework介绍 现在前后端分离的架构设计越来越流行,业界甚至出现了API优先的趋势. 显然API开发已经成为后端程序员的必备技能了,那作为Python程序员特别是把Dj ...

  3. 大数据处理框架之Strom:Flume+Kafka+Storm整合

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 storm-0.9 apache-flume-1.6.0 ...

  4. Java base64转图片

    import sun.misc.BASE64Decoder; import java.io.FileOutputStream; import java.io.OutputStream; public ...

  5. SpringBoot中各配置文件的优先级及加载顺序

    我们在写程序的时候会碰到各种环境(开发.测试.生产),因而,在我们切换环境的时候,我们需要手工切换配置文件的内容.这大大的加大了运维人员的负担,同时会带来一定的安全隐患. 为此,为了能更合理地重写各属 ...

  6. 洛谷 AT667 【天下一人力比較】

    题目链接 https://www.luogu.org/problemnew/show/AT667 题目描述啥的,都看不懂 就一句翻译: 读入若干个字符串,找到字典序第7的字符串并输出. 感谢@da32 ...

  7. 封装的通过微信JS-SDK实现自定义分享到朋友圈或者朋友的ES6类!

    引言: 我们经常在做微信H5的过程中需要自定义分享网页,这个如何实现呢?请看如下的封装的ES6类及使用说明! /** * @jssdk js对象,包括appId,timestamp,nonceStr, ...

  8. NOIP2001提高组复赛B 数的划分

    题目链接:https://ac.nowcoder.com/acm/contest/249/B 题目大意: 略 分析1(记忆化搜索): 方法为减而治之,把n划分成k份的答案就相当于每次把n分成a,b两个 ...

  9. angular4 数据绑定

    HTML属性绑定 1.基本Html属性绑定 <td [attr.colspan]="tableColspan">something</td> 2.css类绑 ...

  10. 21.Pod的limit和request和资源监控收集服务Heapster

    容器的资源需求,资源限制 requests:需求,最低保障: limits:限制,硬限制: CPU: 1颗逻辑CPU =,millicores 500m=.5CPU 内存: E.P.T.G.M.K E ...