sqlalchemy查询结果类型简析
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查询结果类型简析的更多相关文章
- 基于DFA敏感词查询的算法简析
		
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要对敏感词做一个过滤,首先有几个方案可以选择: a.直 ...
 - mysql体系结构和sql查询执行过程简析
		
一: mysql体系结构 1)Connectors 不同语言与 SQL 的交互 2)Management Serveices & Utilities 系统管理和控制工具 备份和恢复的安全性,复 ...
 - MySQL 慢查询日志配置与简析
		
MySQL慢查询日志配置与简析 By:授客 QQ:1033553122 <1> 查看是否开启慢查询日志 SHOW VARIABLES LIKE 'slow%'; 说明: a. 如果sl ...
 - WebGIS中基于AGS的画圆查询简析以及通过Polygon来构造圆的算法
		
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 某个项目需求中需要在前端进行画圆查询,将圆范围上的多边形要素 ...
 - DNS使用的是TCP协议还是UDP协议简析
		
DNS使用的是TCP协议还是UDP协议简析 DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情况 ...
 - Linux VFS机制简析(一)
		
Linux VFS机制简析(一) 本文主要基于Linux内核文档,简单分析Linux VFS机制,以期对编写新的内核文件系统(通常是给分布式文件系统编写内核客户端)的场景有所帮助. 个人渊源 切入正文 ...
 - OpenStack之Glance源码简析
		
Glance简介 OpenStack镜像服务器是一套虚拟机镜像发现.注册.检索. glance架构图: Glance源码结构: glance/api:主要负责接收响应镜像管理命令的Restful请求, ...
 - ASCII、Unicode、UTF-8、UTF-16、GBK、GB2312、ANSI等编码方式简析
		
ASCII.Unicode.UTF-8.UTF-16.GBK.GB2312.ANSI等编码方式简析 序言 从各种字节编码方法中,能看到那个计算机发展的洪荒时期的影子. ASCII ASCII码有标准A ...
 - <摘自>飞:jxl简析2 [ http://www.emlog.net/fei ]
		
[<摘自>飞:jxl简析:http://www.emlog.net/fei] (二)应用 在进行实践前 , 我们需要对 excel 有一个大致的了解 ,excel 文件由一个工作簿 (Wo ...
 
随机推荐
- Boosting Static Representation Robustness for Binary Clone Search against Code Obfuscation and Compiler Optimization(二)
			
接着上篇Asm2Vec神经网络模型流程继续,接下来探讨具体过程和细节. 一.为汇编函数建模 二.训练,评估 先来看第一部分为汇编函数建模,这个过程是将存储库中的每一个汇编函数建模为多个序列.由于 ...
 - LeetCode算法题-Longest Uncommon Subsequence I(Java实现)
			
这是悦乐书的第252次更新,第265篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第119题(顺位题号是521).给定一组两个字符串,您需要找到这组两个字符串中最长的不同 ...
 - 初学Django项目可能会遇到的问题
			
1. 出现莫名其妙的 app01 我项目中的app名字并不是app01,可是运行python manage.py makemigrations的时候总是提示app01不是已安装的app Applyin ...
 - 【Python 05】Python开发环境搭建
			
Python3安装和使用 1.安装 Python管方下载地址 选择Customize installation安装,并且勾选Add Python 3.X to PATH. 勾选Documentatio ...
 - MySQL之数据备份、pymysql模块
			
一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接 ...
 - Node.js完整的响应html页面(包括css,js文件)
			
主要思想就是任何一个静态文件也应该做响应,一个获取静态文件都应当请求来处理,这是主要思想. 同时要注意两点.第一,对于不同的文件类型,比如html,css,js,请求头里面的文件类型需要根据不同的文件 ...
 - day2 and day3 总结-python基础-坚持就是胜利
			
今日份快捷键学习,pycharm中按CTRL+ALT+L 自动规范化操作,不过和QQ的快捷键会有冲突,建议更改QQ的 知识点: 1.编码 2.while循环 3.运算符 4.数字int 5.布尔值 6 ...
 - Java项目的导入和导出
			
在很多情况下,需要将当前的 Java工程传递给其他人继续工作, 或协同工作,或者是从其他人那里接收到传递来的Java项目, 就需要掌握 Java项目的导入和导出. 以 Hello World 为例: ...
 - Django模板语言(Template)
			
1.变量 变量相关用 { { } } 逻辑相关用{% %} 2.Filter过滤器 (1)default 如果一个变量是false或者为空,使用给定的默认值. 否则,使用变量的值. {{ va ...
 - tiff图片拆分
			
本程序下载地址: tiff格式的图片可以由多张图片合成, 也可以拆分为多张图片.不管是合成或者拆分,都借助了第三方开源库Cximage,对于这个图像库的使用,我们没有必要去一行一行的去看它的代码实现, ...