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. IIS 反向代理到 Apache、Tomcat

    将请求的网址重写重定向到其它网址.当80端口被占用无法同时使用两个Web服务的解决方案,使得IIS和Apache Tomcat 共存 环境 WindowServer 2008 IIS7 Apache ...

  2. SQLServer之创建事务未提交读

    未提交读注意事项 使用 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 指定会话的锁定级别. 一次只能设置一个隔离级别选项,而且设置的选项将一直对那个 ...

  3. CSS---选择器种类 | 层叠性权重

    一.css选择器种类 1.1,ID选择器 1.2,类选择器 1.3,标签选择器 1.4,后代选择器 1.5,子代选择器 1.6,交集选择器 1.7,并集选择器 1.8,通配符选择器 1.9,属性选择器 ...

  4. Kafka 0.11.0.0 实现 producer的Exactly-once 语义(中文)

    很高兴地告诉大家,具备新的里程碑意义的功能的Kafka 0.11.x版本(对应 Confluent Platform 3.3)已经release,该版本引入了exactly-once语义,本文阐述的内 ...

  5. 关键字-super

    super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类. class BaseAction { String name; int age; void value( ...

  6. Java MultipartFile 使用记录

    private void file(String path,MultipartFile file){ String separator = "/"; String originFi ...

  7. Cesium如何通过addImageryProvider方法加载SkylineGlobe Server发布的WMS服务

    某某某单位用SkylineGlobeServer7版本发布了好些服务,然后让我们在Cesium里都加载进来展示. 其实只要符合OGC标准的,加进来还是很容易的. 示例代码如下: function te ...

  8. Framework7 索引列表插件的异步加载实现

    前言 Framework7 作为移动端的开发框架的优良之处已经无需多言.现在已经有了 React 和 Vue 版本,之前在项目中用过 F7 + vue 的开发方式,无论是效率还是产出都近乎完美.有时间 ...

  9. JS--编码规范

    1. 请修复给定的 js 代码中,函数定义存在的问题 function functions(flag) { if (flag) { function getValue() { return 'a'; ...

  10. 572. Subtree of Another Tree(easy)

    Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and no ...