2011-03-25 97 views
2

如果我說了70,000個對象並想對它們進行統計,但統計數據並不需要100%準確,那麼抽出1000個對象的最佳方法是什麼,對這些對象進行統計然後只是將其縮放到接近70,000的統計數據?我似乎無法找到從查詢集中獲取1000個隨機對象的有效方法。用Django逼近對象統計信息

回答

1

你可以隨意使用對象:

objs = list(MyModel.objects().order_by("?")[:1000]) 

但是,獲取生成的SQL的基本order by random不是特別有效。

+0

這正是我碰到的。我讀過的文檔中說過.order_by('?')很慢,如果我試圖通過抽取樣本來加快速度,它無法幫助。 – DantheMan 2011-03-25 03:36:17

0

我知道這不是你要找的答案,但有時在做大量報告時,你需要比Django的ORM提供的更多。我和一個使用Django作爲主應用程序的人一起工作,但對於某些報表工具(和JSON服務),他使用了Flask和SQLAlchemy,並且能夠完成更多工作,而無需編寫SQL。

0

關於從數據庫中獲取隨機行的問題,有一個great post(在評論中也沒有幾個優點)。

我唯一要檢查的是通過「in_bulk」方法獲得一些對象,因爲這樣你可能會更快。