zoukankan      html  css  js  c++  java
  • Python sqlalchemy 高级用法

    一. 关联查询

    sys_user_list = SysPermission.query.join(OrgRolePermission, OrgRolePermission.sys_permission_id == SysPermission.id).filter(OrgRolePermission.role_name == user_cache["role"]).all()

    二. 过滤查询

    from sqlalchemy import not_
    sys_list = SysPermission.query.filter(not_(SysPermission.type == 1))

    三. and, or, in查询

    from sqlalchemy import and_, or_
    sys_user_list = SysPermission.query.filter(and_(SysPermission.type == 2, SysPermission.type == 3)).all()
    sys_user_list = SysPermission.query.filter(or_(SysPermission.type == 2, SysPermission.type == 3)).all()
    live_hls_video = LiveHlVideos.query.filter(LiveHlVideos.live_hl_id.in_(live_hls_list)).all()    # live_hls_list: [1,2,3]

    四. func

    from sqlalchemy import func
    question_types = db.session.query(MoocBankQuestion.question_type, func.sum(MoocBankQuestion.points_possible), func.count(MoocBankQuestion.question_type)).filter(
                MoocBankQuestion.mooc_bank_id == mooc_bank_id).group_by(MoocBankQuestion.question_type).all()

     五.extract

    # 查询时间
    from app.models.canvas_new import MoocOrders 
    from sqlalchemy import func, and_, extract
    
    MoocOrders.query.filter(and_(extract('year', MoocOrders.created_at) == 2020, extract('month', MoocOrders.created_at) == 6)).all()                                                                  
    MoocOrders.query.filter(func.to_char(MoocOrders.created_at, "yyyy-mm") == "2020-06").all()
    
    start_at = start_at or []  # 示例 "2020-07-11"
    end_at = end_at or []  # 示例 "2020-07-11"
    f = table.query
    
    if start_at and end_at:
        start_at = list(map(lambda x: int(x), start_at.split("-")))
        end_at = list(map(lambda x: int(x), end_at.split("-")))
        start = date(year=start_at[0], month=start_at[1], day=start_at[2])
        end = date(year=end_at[0], month=end_at[1], day=end_at[2])
        f = f.filter(table.created_at <= end).filter(table.created_at >= start)
    else:
        if start_at:
            start_at = list(map(lambda x: int(x), start_at.split("-")))
            start = date(year=start_at[0], month=start_at[1], day=start_at[2])
            f = f.filter(table.created_at >= start)
        if end_at:
            end_at = list(map(lambda x: int(x), end_at.split("-")))
            end = date(year=end_at[0], month=end_at[1], day=end_at[2])
            f = f.filter(table.created_at <= end)
  • 相关阅读:
    04. SpringCloud实战项目-安装Docker
    03. SpringCloud实战项目-配置虚拟机网络
    02. SpringCloud实战项目-快速搭建Linux环境-运维必备
    01. SpringCloud实战项目-五分钟搞懂分布式基础概念
    docker安装redis
    docker 安装mysql
    安装docker
    配置虚拟机网络
    Vagrant快速搭建Ubuntu虚拟机环境
    5分钟搞懂分布式基础概念
  • 原文地址:https://www.cnblogs.com/rixian/p/11495757.html
Copyright © 2011-2022 走看看