Workaround old sqlite not having 'select count(distinct key)'.
[quix0rs-apt-p2p.git] / apt_p2p_Khashmir / db.py
index 47e974cf62122bab33cd4b4a4868a92e873bf822..bd777b60e78f65126859645a29152b49aeab80bd 100644 (file)
@@ -148,6 +148,24 @@ class DB:
         c.execute("DELETE FROM kv WHERE last_refresh < ?", (t, ))
         self.conn.commit()
         
+    def keyStats(self):
+        """Count the total number of keys and values in the database.
+        @rtype: (C{int), C{int})
+        @return: the number of distinct keys and total values in the database
+        """
+        c = self.conn.cursor()
+        c.execute("SELECT COUNT(value) as num_values FROM kv")
+        values = 0
+        row = c.fetchone()
+        if row:
+            values = row[0]
+        c.execute("SELECT COUNT(key) as num_keys FROM (SELECT DISTINCT key FROM kv)")
+        keys = 0
+        row = c.fetchone()
+        if row:
+            keys = row[0]
+        return keys, values
+
 class TestDB(unittest.TestCase):
     """Tests for the khashmir database."""