一、模型名

二、模型对象属性

三、聚合函数

下面就分别为大家讲讲query函数这三种参数的用法。

在讲之前,我已经把数据库连接配置、模型,以及添加数据写好了,代码如下:

 1 from sqlalchemy import create_engine,Column,String,Integer
 2 from sqlalchemy.ext.declarative import declarative_base
 3 from sqlalchemy.orm.session import sessionmaker
 4 import random
 5
 6 DIALCT = "mysql"
 7 DRIVER = "pymysql"
 8 USERNAME = "root"
 9 PASSWORD = "admin"
10 HOST = "127.0.0.1"
11 PORT = "3306"
12 DATABASE = "test"
13 DB_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALCT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
14 engine = create_engine(DB_URI)
15 Base = declarative_base(engine)
16 session = sessionmaker(engine)()
17
18 class Student(Base):
19     __tablename__ = "student"
20     id = Column(Integer , primary_key=True , autoincrement=True)
21     name = Column(String(50))
22     score = Column(Integer)
23
24     def __repr__(self):
25         return "<Student name:%s,score:%s>"%(self.name,self.score)
26
27 Base.metadata.drop_all()
28 Base.metadata.create_all()
29
30 for i in range(6):
31     # random.randint(0,100) 随机生成一个0-100之间的成绩
32     student = Student(name = "name%s"%i,score=random.randint(0,100))
33     session.add(student)
34 session.commit()

第一种:模型名

语法:query(模型名)

假如我们现在要查找表中所有学生数据,方法如下:

1 results = session.query(Student).all()
2 for result in results:
3     print(result)

运行上述代码,然后就可以看到查找结果了。

第二种:模型对象属性

语法:query(模型名.模型属性)

比如我们现在只想查看表中所有学生的姓名(看到成绩头有点大),代码如下:

1 results = session.query(Student.name).all()
2 for result in results:
3     print(result)

运行上述代码,我们就可以看到所有学生姓名了,结果如下:

第三种:聚合函数

上述表中我已列出所有所有的聚合函数,下马我就一一为大家讲讲。注意:在使用聚合函数前,记得从sqlalchemy导入

1 from sqlalchemy import create_engine,Column,String,Integer,func

1、func.sum

语法:query(func.sum(模型对象属性))

比如想要知道所有学生成绩之和,那么我们就可以使用func.sum这个聚合函数来实现

1 results = session.query(func.sum(Student.score)).all()
2 print(results)

运行代码,结果学生成绩之和就计算好了。

2、func.max

语法:query(func.max(模型对象属性))

如果要查找考试成绩最高的哪个学生,就可以使用func.max这个函数

1 results = session.query(func.max(Student.score)).all()
2 print(results)

嗯,查询出来的学生成绩最高分是98分

3、func.min

语法:query(func.min(模型对象属性))

我们知道最高分,然后想知道班上学生成绩波动大小。哪怎么办呢??想知道成绩波动大小,我们是不是还得知道班上成绩最低分,是吧?然后用最大值减去最小值除以二就可以求出学生成绩波动大小了。哪如何找出最小值呢?方法就是使用func.min这个聚合函数。

1 results = session.query(func.min(Student.score)).all()
2 print(results)

运行上述代码,我们就可以查找到分数最低的哪个。

4、func.count

语法:query(func.count(模型对象属性))

1 results = session.query(func.count(Student.score)).all()
2 print(results)

不出什么意外的话,我们就能得到下面结果(没错吧,总共是6行):

5、func.avg

语法:query(func.avg(模型对象属性))

期末考试考完,学校通常是不是要跟年级进行对比?对比啥?当然是班级考试成绩排名、好坏啦!那么如何对比呢?是不是通过考试成绩平均分,是吧?我说的没错吧?OK,func.avg这个聚合函数就是为解决求平均值而生的。

1 results = session.query(func.avg(Student.score)).all()
2 print(results)

运行上述代码,结果如下:

平均分是58.3333,考的有点不太理想啊。

上面就是关于query函数可用参数讲解。文章若有不当之处,欢迎大家指出!

转载于:https://www.cnblogs.com/lmh001/p/9959412.html

sqlalchemy query函数可用参数有哪些?相关推荐

  1. document.execCommand()函数可用参数解析 (转)

    <HTML> <HEAD> <TITLE>JavaScript--execCommand指令集</TITLE> <SCRIPTLANGUAGE=& ...

  2. Pandas获取SQL数据库read_sql()函数及参数一文详解+实例代码

    前言 Pandas常用作数据分析工具库以及利用其自带的DataFrame数据类型做一些灵活的数据转换.计算.运算等复杂操作,但都是建立在我们获取数据源的数据之后.因此作为读取数据源信息的接口函数必然拥 ...

  3. Python数据分析常用函数及参数详解,可以留着以备不时之需

    利用Python进行数据分析最核心的库就是Pandas,可以说,掌握了Pandas库,Python数据分析就属于中阶水平了. 在<一次简单.完整的全流程数据分析,让我们不再害怕Python &g ...

  4. Python把函数作为参数传入的高阶编程方法

    map:接受两个参数(函数,Iterable),map将传入的函数依次作用于Iterable的每个元素,并且返回新的Iterable def f(x):return x*x r = map(f,[1, ...

  5. Python函数和参数

    Dear learners, in this tutorial we are going to learn Python Function and Arguments. Previously we l ...

  6. 如何在Google表格中使用QUERY函数

    If you need to manipulate data in Google Sheets, the QUERY function can help! It brings powerful, da ...

  7. python怎么让输出结果为01_python函数基础-参数-返回值-注释-01

    什么是函数 函数就是有特定功能的工具 #python中有内置函数(python解释器预先封装好的)与自定义函数(用户自定义封装的)之分 为什么要用函数 #可以减少代码冗余,增加代码复用性#使代码逻辑更 ...

  8. ES6 | let 关键字 + const关键字 + 箭头函数 + rest参数 + 扩展运算符 ... + Symbol + 迭代器 + 生成器 + 变量的解构赋值 + 模板字符串

    目录 ECMASript 相关介绍 ECMASript 6 新特性 let 关键字 const关键字 变量的解构赋值 模板字符串 简化对象写法 箭头函数 => 参数默认值 rest参数 扩展运算 ...

  9. 高级JavaScript #ES6(模板字符串,let,箭头函数,forof,参数增强,解构,class,promise)

    模板字符串 1.模板字符串: 只要拼接字符串 都用模板字符串代替+a.整个字符串包裹在一对儿反引号 ` ` 中b.反引号``中支持换行 c.反引号中需要动态生成的内容必须放在${}里d. ${}里: ...

  10. SQLAlchemy之Column常用参数

    SQLAlchemy之Column常用参数 一.常用参数 primary_key:True 设置某个字段为主键. autoincrement:True 设置这个字段为自增长. default: 设置字 ...

最新文章

  1. c++ 返回对象的引用要小心
  2. Ajax操作的四个步骤
  3. python学习笔记(05)
  4. innerhtml js执行_JS 中 DOM 操作
  5. 【Java面试题视频讲解】十六进制转十进制
  6. java集群_Kafka多节点分布式集群搭建实现过程详解_java
  7. 【数据结构与算法】之深入解析“打家劫舍”的求解思路与算法示例
  8. JAVA当中Calendar类打印日历表单
  9. 火狐最实用的几款插件介绍[含附件]
  10. 第一次在Django上编写静态网页
  11. stm32 FATFS文件系统如何减少Flash和RAM占用,FATFS移除中文文件名,FATFS移除动态内存
  12. 采用 Python 机器学习预测足球比赛结果
  13. MAXWELL软件的初步使用
  14. 入选互联网名人堂的三位中国人
  15. wuauclt.exe是什么进程?为什么运行?wuauclt.exe进程介绍
  16. Ubiquitous Religions(POJ并查集板子题)
  17. 使用OpenCV,Python和dlib进行眨眼检测
  18. mysql ndb安装_MySQL NDB源码安装
  19. FIIL、南卡、漫步者蓝牙耳机怎么选?国产半入耳蓝牙耳机推荐
  20. AndroidStudio模拟器全面屏皮肤

热门文章

  1. server2012文件服务器的开始按钮,Windows Server 2012实用技巧集锦
  2. 福州大学数学与计算机科学学院 地址,福州大学数学与计算机科学学院导师介绍:陈神灿...
  3. 计算机CG技术未来发展前景,CG就业前景怎么样?
  4. 域名微信拦截html代码,微信域名拦截查询网页源码——一个非常实用的微信域名检测工具实现...
  5. TortoiseSVN使用教程
  6. 牛逼神器第三弹--nth_element函数
  7. 利用tensorFlow api 识别手术器械
  8. 汇川技术js600变频器_汇川变频器MD200系列产品型号及功能介绍
  9. 算法:求数组区间的和Range Sum Query - Immutable
  10. java 6 基础_java基础(6)