上週新增了乙個新的爬蟲目標,前後端做好list頁,詳情頁,over
沒想到本週管理爬蟲資訊的小哥反映說,每頁都會出現一條重複的資料,這條重複的資料永遠佔據著每頁的最後一條
設想了幾個可能導致該問題的原因
使用html模板時誤加了一行**,如posts.last之類
分頁器使用方法錯誤
經排查發現:
html模板語言使用完全正確
分頁器使用完全正確
而且當時很詭異的一件事是:線下跑的資料不重複,線上的重複,真是匪夷所思
於是先手動操作刪除了線上那條重複的資料,結果發現仍然有新的資料替代了原來重複的那條。而且重複的現象只出現在前15頁,後面幾頁並不會出現,這就更匪夷所思了
最後在staskoverflow搜尋關鍵字django paginator repeat data
的時候發現了類似的問題:
猜想應該是queryset
的order_by
導致的
在**中發現,原來獲取資料集時order_by
對應的字段為空,講其替換為乙個一定存在的字段後成功解決該問題
# model.py
score = models.floatfield("搜尋評分", default=0.0, blank=true, null=true)
update_time = models.datetimefield("更新時間", auto_now=true)
# views.py
# 導致分頁資料出現重複的**
items = codeitems.objects.filter(repos='sourceforge').order_by('-score')
# 避免分頁資料出現重複的**
update_time = models.datetimefield("更新時間", auto_now=true)
這個問題在11年就出現過,現在已經是19年了,依然會出現該問題,究其原因:
order_by本身的弱檢查導致
使用者在使用order_by
的時候,應呼叫至少乙個非null的字段
SQLAlchemy新增分頁 paginate
from sqlalchemy.orm import query class pagination object 分頁物件 def init self,query,page,per page,total,items self.query query self.page page self.per p...
Django元件 分頁器
批量匯入資料 booklist for i in range 100 book.objects.bulk create booklist 分頁器的使用 book list book.objects.all paginator paginator book list,10 print count pa...
Django元件 分頁器
批量匯入資料 booklist for i in range 100 book.objects.bulk create booklist 分頁器的使用 book list book.objects.all paginator paginator book list,10 print count pa...