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对象,它包含指定范围内的结果


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

查看所有标签

猜你喜欢:

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

算法分析导论

算法分析导论

(美)Robert Sedgewick、(法)Philippe Flajolet / 冯舜玺、李学武、裴伟东、等其他 / 机械工业出版社 / 2006-4 / 38.00元

本书阐述了用于算法数学分析的主要方法,所涉及的材料来自经典数学课题,包括离散数学、初等实分析、组合数学,以及来自经典的计算机科学课题,包括算法和数据结构,本书内容集中覆盖基础、重要和有趣的算法,前面侧重数学,后面集中讨论算法分析的应用,重点的算法分的的数学方法。每章包含大量习题以及参考文献,使读者可以更深入地理解书中的内容。 本书适合作为高等院校数学、计算机科学以及相关专业的本科生和研究生的......一起来看看 《算法分析导论》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具