一、模型名

二、模型对象属性

三、聚合函数

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

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

 from sqlalchemy import create_engine,Column,String,Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.session import sessionmaker
import random DIALCT = "mysql"
DRIVER = "pymysql"
USERNAME = "root"
PASSWORD = "admin"
HOST = "127.0.0.1"
PORT = ""
DATABASE = "test"
DB_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALCT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
engine = create_engine(DB_URI)
Base = declarative_base(engine)
session = sessionmaker(engine)() class Student(Base):
__tablename__ = "student"
id = Column(Integer , primary_key=True , autoincrement=True)
name = Column(String(50))
score = Column(Integer) def __repr__(self):
return "<Student name:%s,score:%s>"%(self.name,self.score) Base.metadata.drop_all()
Base.metadata.create_all() for i in range(6):
# random.randint(0,100) 随机生成一个0-100之间的成绩
student = Student(name = "name%s"%i,score=random.randint(0,100))
session.add(student)
session.commit()

第一种:模型名

语法:query(模型名)

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

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

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

第二种:模型对象属性

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

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

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

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

第三种:聚合函数

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

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

1、func.sum

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

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

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

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

2、func.max

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

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

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

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

3、func.min

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

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

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

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

4、func.count

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

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

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

5、func.avg

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

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

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

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

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

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

sqlalchemy query函数可用参数有哪些?的更多相关文章

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

    隐藏在暗处的方法-execCommand() 关键字: javascript document document.execCommand()方法可用来执行很多我们无法实现的操作. execComman ...

  2. 三十二:数据库之SQLAlchemy.query函数可查询的数据和聚合函数

    准备工作 from sqlalchemy import create_engine, Column, Integer, String, Floatfrom sqlalchemy.ext.declara ...

  3. 【Flask】query可用参数

    ### query可用参数:1. 模型对象.指定查找这个模型中所有的对象.2. 模型中的属性.可以指定只查找某个模型的其中几个属性.3. 聚合函数. * func.count:统计行的数量. * fu ...

  4. 【matlab】设定函数默认参数

    C++/java/python系列的语言,函数可以有默认值,通常类似如下的形式: funtion_name (param1, param2=default_value, ...) 到了matlab下发 ...

  5. (转)Free函数的参数一定要是malloc返回的那个指针

    Free函数的参数一定要是malloc返回的那个指针   之前认为只要free的参数在malloc分配的区域之内就可以了, 现在发现不对的.在嵌入式里分配堆都是按照块来的,只要在这个块内系统就能识别, ...

  6. Install Shield常用函数以及参数

    nstall Shield函数库 1  库函数综述InstallShield包含300多个内部库函数,用户可在安装脚本中调用它们来创建程序组,操作文件夹,处理目录,监督安装状态,创建对话框,操作文件及 ...

  7. C#学习笔记(十):函数和参数

    函数 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syste ...

  8. Python 4 函数的参数,内置函数,装饰器,生成器,迭代器,

    一.函数的参数: 1.位置参数:调用函数时根据函数定义的参数位置来传递参数. 2.关键字参数:用于函数调用,通过“键-值”形式加以指定.可以让函数更加清晰.容易使用,同时也清除了参数的顺序需求. 3. ...

  9. Python函数式编程(把函数作为参数传入)

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

随机推荐

  1. HGOI20190810 省常中互测3

    Problem A  夏洛特 若当前处在点$(x,y)$下一时刻可以向该点四周任意方向走动一步, 初始在$(0,0)$是否存在一条合法的路线满足下列$n$个限制: 每一个限制形如$t_i , x_i ...

  2. Selenium 对元素的判断(expected_conditions)(转载)

    我们在用webdriver去操作元素时,先要判断这个元素是否存在,存在才去操作,否则就会报错. selenium的expected_conditions模块提供了一些判断方法 场景 Expected ...

  3. JS框架_(Laydate.js)简单实现日期日历

    百度云盘 传送门 密码:71hf JavaScript日期与时间组件_____laydate.js 日期日历效果: <!DOCTYPE html> <html> <hea ...

  4. [洛谷P1501] [国家集训队]Tree II(LCT模板)

    传送门 这是一道LCT的板子题,说白了就是在LCT上支持线段树2的操作. 所以我只是来存一个板子,并不会讲什么(再说我也不会,只能误人子弟2333). 不过代码里的注释可以参考一下. Code #in ...

  5. 前端面试题总结——HTML(持续更新中)

    前端面试题总结--HTML(持续更新中) 1.什么是HTML? HTML:HyperText Markup Language超文本标记语言 2.XHTML和HTML有什么区别 HTML是一种基本的WE ...

  6. java正则表达式详细总结

    Java 提供了功能强大的正则表达式API,在java.util.regex 包下.本教程介绍如何使用正则表达式API. 正则表达式 一个正则表达式是一个用于文本搜索的文本模式.换句话说,在文本中搜索 ...

  7. JavaScript 函数相关属性

    1.name 既函数名 function test(){ console.log("Haha") }; console.log(test.name)//test 2.length属 ...

  8. ubuntu 16.04 安装最新的 docker

      转载地址:https://www.cnblogs.com/tianhei/p/7802064.html 本文将介绍在ubuntu16.04系统下安装和升级docker.docker-compose ...

  9. leetcode-easy-dynamic-121 Best Time to Buy and Sell Stock

    mycode  70.94% 思路:其实没必要去考虑在计算了一个max-min后,后面又出现了一个新的的最小值的情况,因为res取值就是取自己和新的res的最大值 在遇见max值之前,遇见新的最小值, ...

  10. Android内存Activity泄露:Handler与Threads

    Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收.也就是说,一个对象不被任何引用所指向,则该对象会在被 ...