欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析python中SQLAlchemy排序的一個坑

 更新時間:2017年02月24日 10:43:59   作者:Just 做 IT  
這篇文章主要介紹了關于python中SQLAlchemy排序的一個坑,文中給出了詳細的示例代碼,需要的朋友可以參考借鑒,感興趣的朋友們下面來一起學習學習吧。

前言

SQLAlchemy是Python編程語言下的一款ORM框架,該框架建立在數(shù)據(jù)庫API之上,使用關系對象映射進行數(shù)據(jù)庫操作,簡言之便是:將對象轉(zhuǎn)換成SQL,然后使用數(shù)據(jù)API執(zhí)行SQL并獲取執(zhí)行結(jié)果。最近在使用SQLAlchemy排序遇到了一個坑,所以想著總結(jié)下來,分享給更多的朋友,下面來一起看看吧。

坑的代碼

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() 函數(shù)速度能提高10倍

下面附上一個 sqlalchemy 高性能隨機取出若干條數(shù)據(jù)

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()

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Python PyYAML庫解析YAML文件使用詳解

    Python PyYAML庫解析YAML文件使用詳解

    這篇文章主要為大家介紹了Python PyYAML庫解析YAML文件使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • 一文帶你掌握Python中文件I/O的使用技巧

    一文帶你掌握Python中文件I/O的使用技巧

    Python提供了強大而靈活的文件I/O(輸入/輸出)工具,能夠讀取、寫入和處理各種文件類型,本文將詳細介紹Python文件I/O的使用技巧,需要的可以參考一下
    2023-12-12
  • 使用Python去除小數(shù)點后面多余的0問題

    使用Python去除小數(shù)點后面多余的0問題

    這篇文章主要介紹了使用Python去除小數(shù)點后面多余的0問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 使用Python+OpenCV進行卡類型及16位卡號數(shù)字的OCR功能

    使用Python+OpenCV進行卡類型及16位卡號數(shù)字的OCR功能

    本文將使用Python+OpenCV實現(xiàn)模板匹配算法,以自動識別卡的類型和以及16位卡號數(shù)字,通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2021-08-08
  • python nmap實現(xiàn)端口掃描器教程

    python nmap實現(xiàn)端口掃描器教程

    這篇文章主要為大家詳細介紹了python nmap實現(xiàn)端口掃描器教程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Python將多個圖像合并輸出的實現(xiàn)方法

    Python將多個圖像合并輸出的實現(xiàn)方法

    這篇文章主要介紹了Python將多個圖像合并輸出的實現(xiàn)方法,本文介紹了兩種將多個圖像合并為一個輸出的方法:使用PIL庫或使用OpenCV和NumPy,這些庫都可以使用Python中的簡單語法和少量的代碼來完成此任務,需要的朋友可以參考下
    2023-06-06
  • Python 元類使用說明

    Python 元類使用說明

    元類就是類的模板——太形象了了呀,霍霍。
    2009-12-12
  • Pandas刪除數(shù)據(jù)的幾種情況(小結(jié))

    Pandas刪除數(shù)據(jù)的幾種情況(小結(jié))

    這篇文章主要介紹了Pandas刪除數(shù)據(jù)的幾種情況(小結(jié)),詳細的介紹了4種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • PyTorch中torch.tensor與torch.Tensor的區(qū)別詳解

    PyTorch中torch.tensor與torch.Tensor的區(qū)別詳解

    這篇文章主要介紹了PyTorch中torch.tensor與torch.Tensor的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • python工具dtreeviz決策樹可視化和模型可解釋性

    python工具dtreeviz決策樹可視化和模型可解釋性

    這篇文章主要介紹了python工具dtreeviz決策樹可視化和模型可解釋性,決策樹是梯度提升機和隨機森林的基本構(gòu)建塊,在學習這些模型的工作原理和模型可解釋性時,可視化決策樹是一個非常有幫助,下文相關資料,需要的小伙伴可任意參考一下
    2022-03-03

最新評論