sqlalchemy query函数可用参数有哪些?

sqlalchemy query函数可用参数有哪些?

一、模型名

二、模型对象属性

三、聚合函数

名称作用
func.sum求和
func.max求最大值
func.min求最小值
func.count求行数
func.avg求平均值

下面就分别为大家讲讲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 = "3306"
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)

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

在前面我所讲的关于sqlalchemy文章中,基本都是以该方式来查找数据的。相信大家也都会了,没啥好讲的。

第二种:模型对象属性

语法: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函数可用参数讲解。文章若有不当之处,欢迎大家指出!

 

 

 

 

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`Flask-SQLAlchemy` 是 Flask 中用于操作据库的扩展,它提供了丰富的可配置项。以下是一些常用的可配置项: - `SQLALCHEMY_DATABASE_URI`:据库连接 URI,格式为 `dialect+driver://username:password@host:port/database`。 - `SQLALCHEMY_TRACK_MODIFICATIONS`:是否追踪据库模型的修改,如果为 True,会占用额外的内存,并且会在每次请求结束后自动提交修改,如果为 False,需要手动提交修改。 - `SQLALCHEMY_POOL_SIZE`:连接池大小,即连接池中最多可以同时存在的连接。 - `SQLALCHEMY_POOL_TIMEOUT`:获取连接的超时时间,即连接池中没有可用连接时等待的最长时间。 - `SQLALCHEMY_POOL_RECYCLE`:连接池中连接的回收时间,即连接在连接池中的最长生命周期,超过这个时间会被回收并重新创建连接。 - `SQLALCHEMY_ENGINE_OPTIONS`:据库引擎配置,常见的配置项包括 `isolation_level`(事务隔离级别)、`echo`(是否输出 SQL 语句)等。 例如,如果要将据库连接 URI 设置为 PostgreSQL 据库,并且将连接池大小设置为 10,可以使用以下代码: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:password@localhost/mydatabase' app.config['SQLALCHEMY_POOL_SIZE'] = 10 db = SQLAlchemy(app) ``` 当然,还有很多其他的可配置项,具体可以参考 Flask-SQLAlchemy 的文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值