iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >浅析python中SQLAlchemy排序的一个坑
  • 810
分享到

浅析python中SQLAlchemy排序的一个坑

pythonSQLAlchemy 2022-06-04 18:06:57 810人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

前言 sqlAlchemy是python编程语言下的一款ORM框架,该框架建立在数据库api之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

前言

sqlAlchemy是python编程语言下的一款ORM框架,该框架建立在数据库api之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。最近在使用SQLAlchemy排序遇到了一个坑,所以想着总结下来,分享给更多的朋友,下面来一起看看吧。

坑的代码


query = db_session.query(UserVideo.vid,
         UserVideo.uid,
         UserVideo.v_width,
         UserVideo.v_height,
         UserVideo.create_time,
         UserVideo.cover,
         UserVideo.source_url,
         UserVideo.v_type,
         UserVideo.cateGory,
         User.username,
         User.sex,
         UserExtrainfo.avatar,
         UserExtraInfo.watermark)
  query = query.filter(UserVideo.status == 1,
        User.uid == UserVideo.uid,
        UserExtraInfo.uid == UserVideo.uid) 
  query = query.filter(UserVideo.status == 1)
  query = query.order_by(-UserVideo.vid)
  query = query.limit(20).all()

不坑的代码


query = db_session.query(UserVideo.vid,
         UserVideo.uid,
         UserVideo.v_width,
         UserVideo.v_height,
         UserVideo.create_time,
         UserVideo.cover,
         UserVideo.source_url,
         UserVideo.v_type,
         UserVideo.category,
         User.username,
         User.sex,
         UserExtraInfo.avatar,
         UserExtraInfo.watermark)
  query = query.filter(UserVideo.status == 1,
        User.uid == UserVideo.uid,
        UserExtraInfo.uid == UserVideo.uid) # .order_by(UserVideo.vid.desc()).limit(20).all()
  query = query.filter(UserVideo.status == 1)
  query = query.order_by(UserVideo.vid.desc())
  query = query.limit(20).all()

对,你没看错,就是那个横杠,拉慢速度。改成 desc() 函数速度能提高10倍

下面附上一个 sqlalchemy 高性能随机取出若干条数据


query = db_session.query(UserVideo.vid,
          UserVideo.uid,
          UserVideo.v_width,
          UserVideo.v_height,
          UserVideo.create_time,
          UserVideo.cover,
          UserVideo.source_url,
          UserVideo.v_type,
          UserVideo.category,
          User.username,
          User.sex,
          UserExtraInfo.avatar,
          UserExtraInfo.watermark)
   query = query.filter(UserVideo.status == 1, User.uid == UserVideo.uid, UserExtraInfo.uid == UserVideo.uid)
rvid = db_session.query(func.round(random.random() * func.max(UserVideo.vid)).label('rvid')).subquery()
query = query.filter(UserVideo.category == category)
query_tail = query
query_tail = query_tail.join(rvid, UserVideo.vid > rvid.c.rvid).limit(20).all()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程网的支持。

--结束END--

本文标题: 浅析python中SQLAlchemy排序的一个坑

本文链接: https://www.lsjlt.com/news/13659.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python字典排序浅析介绍
    目录1.语法规则1-1 代码实例1-2 参数说明2.对字典排序2-1 简单示例2-2 说明2-3 复杂示例2-4 说明1.语法规则 1-1 代码实例 sorted(iterable,...
    99+
    2024-04-02
  • 深入浅析java中的排序方法
    这篇文章给大家介绍深入浅析java中的排序方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。排序1、概念:有n个记录的序列{R1,R2,.......,Rn}(此处注意:1,2,n 是下表序列,以下是相同的作用),其相...
    99+
    2023-05-31
    java 排序 ava
  • C语言中数组排序浅析
    目录前言一、插入排序1、思路2、具体步骤3、代码实现4、复杂度二、冒泡排序1、思路2、具体步骤3、代码实现4、复杂度三、选择排序1、思路2、具体步骤3、代码实现4、复杂度四、希尔排序...
    99+
    2022-12-14
    C语言数组排序 C语言数组 C语言排序
  • Python asyncio的一个坑
    我们先从一个常见的Python编程错误开始说起,我已经见过非常多的程序员犯过这种错误了: def do_not_raise(user_defined_logic): tr...
    99+
    2024-04-02
  • 深入浅析java中堆排序的原理
    本篇文章为大家展示了深入浅析java中堆排序的原理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。从堆排序的简介到堆排序的算法实现等如下:1. 简介  堆排序是建立在堆这种数据结构基础上的选择排序,是...
    99+
    2023-05-31
    java 堆排序 ava
  • mybatis-plus QueryWrapper排序的坑案例分析
    这篇文章主要介绍了mybatis-plus QueryWrapper排序的坑案例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mybatis-plus QueryWrapper排序的坑案...
    99+
    2023-06-29
  • 深入浅析java中的简单选择排序
    这篇文章将为大家详细讲解有关深入浅析java中的简单选择排序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。选择排序的基本算法思想:每一趟在 n-i+1 (i=1,2,3,……,n-1)个记录...
    99+
    2023-05-31
    java 简单选择排序 ava
  • 浅谈vue-cli5关于yarn的一个小坑
    目录问题解决方案原因问题 昨天有小伙伴下了我的 DEMO之后反映运行报错。 因为这个项目环境我测试过许多次,不管是npm还是yarn都能正常运行,所以听到运行报错时下意识地就认为是...
    99+
    2024-04-02
  • Java中HashMap中的一个坑
    目录前言问题展示原因分析解决方案LinkedHashMap 的魔力总结前言 最近公司的系统要增加一个新的列表展示功能,功能本身难度并不大,但遇到了一个很“奇怪&rdquo...
    99+
    2024-04-02
  • 排序Select中Option项的一个示例(转)
    Form中的Select控件不支持对选择项(Option)的排序,下面我将对Option中value属性值进行排序,并调整每个Option排序后的位置,具体代码如下(这里假设每个Option中的value与其中的text内容相同): 该函...
    99+
    2023-06-03
  • 浅析php中一个字符占几个字节
    PHP是一种广泛使用的编程语言,非常受欢迎。在编写PHP代码时,开发人员通常需要了解PHP字符占用多少字节的知识。这个问题听起来简单,但实际上涉及了很多不同的方面和情况。PHP字符编码在回答这个问题之前,我们需要先了解一下PHP字符编码。字...
    99+
    2023-05-14
    php
  • 一文教你在Java中实现一个冒泡排序和快速排序
    一文教你在Java中实现一个冒泡排序和快速排序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。冒泡排序  冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列...
    99+
    2023-05-31
    java 冒泡排序 快速排序
  • 浅析stl序列容器(map和set)的仿函数排序
    问题:set是一个自动有序的集合容器,这是set的一个最实惠的性质,从小到大,只要你插入进去,就有序了。但是,如果你不想要这个顺序呢,是不是可以人为控制set容器的元素顺序呢?答案是...
    99+
    2022-11-15
    stl 仿函数 map set
  • 解决Golang中ResponseWriter的一个坑
    在使用Context.ResponseWriter中的Set/WriteHeader/Write这三个方法时,使用顺序必须如下所示,否则会出现某一设置不生效的情况。 ctx.Re...
    99+
    2024-04-02
  • Python中的坑实例分析
    今天小编给大家分享一下Python中的坑实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。坑从何来最初是想要为自己的一个...
    99+
    2023-06-27
  • nginx中一个请求的count计数跟踪浅析
    首先说明一下应用方式,有两个nginx的模块,一个名为jtxy,另一个名为jtcmd。一个http请求来了,会进入jtxy的模块处理,jtxy会创建出一个子请求发送给jtcmd,jt...
    99+
    2024-04-02
  • 浅析python中5个带key的内置函数
    目录1.max取最大值函数2.min取最小值函数3.filter过滤函数实例1实例24.map序列映射函数实例1实例25.sorted序列排序函数(1) cmp参数(2)key参数(...
    99+
    2024-04-02
  • 一文浅析Golang中的sync.Map
    本篇文章带大家学习Golang,深入理解下Golang中的sync.Map,希望对大家有所帮助!我们知道,go 里面提供了 map 这种类型让我们可以存储键值对数据,但是如果我们在并发的情况下使用 map 的话,就会发现它是不支持并发地进行...
    99+
    2023-05-14
    Golang 后端 Go
  • PHP中怎么实现一个排序算法
    PHP中怎么实现一个排序算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。< //插入排序(一维数组)  function ins...
    99+
    2023-06-17
  • Python 选择排序中的树形选择排序
    目录1、引言2、问题描述3、解决方案4、结语1、引言 选择排序里面主要讲了三个排序,分别是简单选择排序、树形选择排序、堆排序。今天这篇文章主要讲树形选择排序,树形选择排序也被称为锦标...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作