SQLAlchemy 查询

栏目: Python · 发布时间: 5年前

内容简介:总记一些SQLAlchemy常用的查询使用了flask框架,下面是模型的定义这是一个记录s3备份数据的表

总记一些SQLAlchemy常用的查询

使用了flask框架,下面是模型的定义

这是一个记录s3备份数据的表

class S3MysqlBak(db.Model):
    __tablename__ = "s3mysqlbak"
    id = db.Column(db.Integer, primary_key=True)  #
    project_name = db.Column(db.String(100))  # 项目名
    bak_time = db.Column(db.String(30))  # 备份时间
    bak_size = db.Column(db.BigInteger)  # 备份大小
    bak_name = db.Column(db.String(30))  # 备份文件名

    def __repr__(self):
        return "<S3MysqlBak %r>" % self.project_name

简单查询表的指定列

def get_s3backup():
    s3_bak_list = db.session.query(S3MysqlBak.bak_name, S3MysqlBak.bak_size).all()
    print(s3_bak_list)
    for v in s3_bak_list:
        print(v)

简单查询所有列

def get_s3backup():
    s3_bak_list = S3MysqlBak.query.all()
    for v in s3_bak_list:
        print(v.bak_name, v.bak_size, v.bak_time, v.id, v.project_name)

查询备份日期大于2018-12-06的备份,并且备份大小大于0的记录,多个条件用逗号隔开,多个条件是且的关系这里定义一个函数

# -*- coding:utf-8 -*-
from app import db
from app.models import S3MysqlBak,CosMysqlBak, Backupconfig


def get_s3backup():
    s3_bak_list = S3MysqlBak.query.filter(
        S3MysqlBak.bak_time > '2018-12-06', S3MysqlBak.bak_size > 0
    ).all()
    print(s3_bak_list)
    print(type(s3_bak_list))
    for v in s3_bak_list:
        print(v.bak_name, v.bak_size, v.bak_time, v.id, v.metadata, v.project_name)

使用 mysql 中的limit语句

def get_s3backup():
    s3_bak_list = S3MysqlBak.query.order_by(
        S3MysqlBak.id.desc()
    ).paginate(page=1, per_page=20)
    print(s3_bak_list)
    for v in s3_bak_list.items:
        print(v)
        print(v.bak_name, v.bak_size, v.bak_time, v.id, v.metadata, v.project_name)

上面函数中的all() 和paginate() 是执行器

filter() 和filter_by()是过滤器,必须有执行器才能执行sql

常用的SQLAlchemy查询过滤器

过滤器 说明

filter() 把过滤器添加到原查询上,返回一个新查询

filter_by() 把等值过滤器添加到原查询上,返回一个新查询

limit 使用指定的值限定原查询返回的结果

offset() 偏移原查询返回的结果,返回一个新查询

order_by() 根据指定条件对原查询结果进行排序,返回一个新查询

group_by() 根据指定条件对原查询结果进行分组,返回一个新查询

常用的SQLAlchemy查询执行器

方法 说明

all() 以列表形式返回查询的所有结果

first() 返回查询的第一个结果,如果未查到,返回None

first_or_404() 返回查询的第一个结果,如果未查到,返回404

get() 返回指定主键对应的行,如不存在,返回None

get_or_404() 返回指定主键对应的行,如不存在,返回404

count() 返回查询结果的数量

paginate() 返回一个Paginate对象,它包含指定范围内的结果


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

亮剑.NET

亮剑.NET

2009-3 / 55.00元

《亮剑.NET:SharePoint Server 2007开发实战》共分为8章,详细讲解了SharePoint上常见的开发任务,讲述了各种开发场景下需要了解的知识,并提供了丰富的实例。《亮剑.NET:SharePoint Server 2007开发实战》第1章为基础知识,讲述SharePoint的基本概念,基本的对象模型,代码编写注意事项,并讲解了一个集开发和部署打包为一体的项目结构的创建;第2......一起来看看 《亮剑.NET》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试