简述SQLAlchemy中排序的容易犯的一个错误

这篇文章主要介绍了关于python中sqlalchemy排序的一个坑,文中给出了详细的示例代码,需要的朋友可以参考借鉴,感兴趣的朋友们下面来一起学习学习吧。

前言

SQLAlchemyPython编程语言下的一款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 = queryquery_tail = query_tail.join(rvid, UserVideo.vid > rvid.c.rvid).limit(20).all()

登录后复制

【相关推荐】

1. Python免费视频教程

2. Python面向对象视频

3. Python学习手册

以上就是简述SQLAlchemy中排序的容易犯的一个错误的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2273194.html

(0)
上一篇 2025年2月27日 13:16:41
下一篇 2025年2月22日 21:58:48

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 关于python函数中的参数详解

    昨天看《python核心编程》的时候,刚好看到了函数部分,于是顺势将目前接触到的集中参数类型都总结一下吧^^ (1)       位置参数,调用函数时按位置传入参数 (2)       默认参数,即在函数定义时就给出参数的值,设置默认参数时…

    编程技术 2025年2月27日
    200
  • Python读取文件后n行的代码示例

    这篇文章主要介绍了python实现读取文件最后n行的方法,涉及python针对文件的读取、遍历与运算相关操作技巧,需要的朋友可以参考下 # -*- coding:utf8-*-import osimport timeimport datet…

    编程技术 2025年2月27日
    200
  • Python中tcp socket编程的实例详解

    这篇文章主要介绍了python基础教程之tcp socket编程详解及简单实例的相关资料,需要的朋友可以参考下 Python tcp socket编程详解 初学脚本语言Python,测试可用的tcp通讯程序: 服务器: #!/usr/bin…

    编程技术 2025年2月27日
    200
  • oracle的安装及数据库连接的方法详解

    这篇文章主要介绍了python安装oracle扩展及数据库连接方法,较为详细的分析了python下载oracle扩展及windows、linux环境下的安装步骤、操作技巧及注意事项,需要的朋友可以参考下 本文实例讲述了python安装ora…

    编程技术 2025年2月27日
    100
  • 安装cx_Oracle会遇到的报错以及解决方案

    这篇文章主要介绍了python安装cx_oracle模块常见问题与解决方法,举例分析了python在windows平台与linux平台安装cx_oracle模块常见问题、解决方法及相关注意事项,需要的朋友可以参考下 本文实例讲述了pytho…

    编程技术 2025年2月27日
    200
  • 详解python字符串中引号单双之异同

    下面小编就为大家带来一篇python字符串中的单双引。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 python中字符串可以(且仅可以)使用成对的单引号、双引号、三个双引号(文档字符串)包围: ‘this i…

    编程技术 2025年2月27日
    200
  • Python之datetime和date模块

    这篇文章主要介绍了python之日期与时间处理模块(date和datetime),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 前言 在开发工作中,我们经常需要用到日期与时间,如: 作为日志信息的内容输出 计算…

    2025年2月27日
    200
  • 教你如何通过关键字爬取网页图片

    本文主要介绍了python爬虫:通过关键字爬取百度图片的方法。具有很好的参考价值,下面跟着小编一起来看下吧 使用工具:Python2.7 点我下载 scrapy框架 sublime text3 一。搭建python(Windows版本)  …

    2025年2月27日 编程技术
    200
  • Python基于Socket实现异步非阻塞

    本篇将使用200行代码完成一个微型异步非阻塞web框架:snow。具有很好的参考价值,下面跟着小编一起来看下吧 Python的Web框架中Tornado以异步非阻塞而闻名。本篇将使用200行代码完成一个微型异步非阻塞Web框架:Snow。 …

    编程技术 2025年2月27日
    200
  • 详解Json在Python中的应用

    这篇文章主要介绍了python的标准模块包json详解的相关资料,需要的朋友可以参考下 引言 对于做web开发的人来说,json文本必须要熟知与熟练使用的。大部分网站的API接口调用返回的数据,就是json格式的。如果看json对象所包含的…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论