How to get the number of rows in a table in a Datastore?

后端 未结 3 1488
故里飘歌
故里飘歌 2020-12-31 21:31

In many cases, it could be useful to know the number of rows in a table (a kind) in a datastore using Google Application Engine.
There is not clear and fast solution . A

3条回答
  •  一个人的身影
    2020-12-31 22:06

    You can efficiently get a count of all entities of a particular kind (i.e., number of rows in a table) using the Datastore Statistics. Simple example:

    from google.appengine.ext.db import stats
    kind_stats = stats.KindStat().all().filter("kind_name =", "NameOfYourModel").get()
    count = kind_stats.count
    

    You can find a more detailed example of how to get the latest stats here (GAE may keep multiple copies of the stats - one for 5min ago, one for 30min ago, etc.).

    Note that these statistics aren't constantly updated so they lag a little behind the actual counts. If you really need the actual count, then you could track counts in your own custom stats table and update it every time you create/delete an entity (though this will be quite a bit more expensive to do).

    Update 03-08-2015: Using the Datastore Statistics can lead to stale results. If that's not an option, another two methods are keeping a counter or sharding counters. (You can read more about those here). Only look at these 2 if you need real-time results.

提交回复
热议问题