Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 12th, 2012  |  syntax: None  |  size: 3.28 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. ## insert_some_count_records.py
  2. import couchdbkit
  3. s = couchdbkit.Server("http://localhost:5984")
  4. d = s.get_or_create_db("view_sort_testing")
  5. d.flush()
  6.  
  7. def add_test_data():
  8.     for name in ("a", "b"):
  9.         for x in [1, 3, 5, 7, 9, 11, 13, 15, "sandbox"]:
  10.             doc = {"name": name, "time": x}
  11.             print "Adding", doc
  12.             d.save_doc(doc)
  13.  
  14. def add_design_doc():
  15.     design = {
  16.         "_id": "_design/test",
  17.         "views": {
  18.             "names_by_time": {
  19.                 "map": "function(doc) { emit([doc.name, doc.time], null); }",
  20.             }
  21.         }
  22.     }
  23.     if design["_id"] in d:
  24.         del d[design["_id"]]
  25.     d.save_doc(design)
  26.  
  27. def get_latest(name):
  28.     start = [name, 'a']
  29.     r = d.view("test/names_by_time", descending=True, limit=1, startkey=start)
  30.     return r.first()
  31.  
  32. def get_earliest_after_time(name, time):
  33.     start = [name, time]
  34.     r = d.view("test/names_by_time", limit=1, startkey=start)
  35.     return r.first()
  36.  
  37. def main():
  38.     print "*"*60
  39.     print "* Adding test data..."
  40.     add_test_data()
  41.     print
  42.     print "*"*60
  43.     print "* Adding design doc..."
  44.     add_design_doc()
  45.     print
  46.     print "*"*60
  47.     print "* Getting latest document for 'a'..."
  48.     print get_latest('a')
  49.     print
  50.     print "*"*60
  51.     print "* Getting earliest after 4 for 'b'..."
  52.     print get_earliest_after_time('b', 4)
  53.     print
  54.     print "*"*60
  55.     print "* Getting earliest after 11 for 'a'..."
  56.     print get_earliest_after_time('a', 11)
  57.     print
  58.     print "*"*60
  59.     print "* Getting earliest after 1234 for 'b'..."
  60.     print get_earliest_after_time('b', 1234)
  61.     print
  62.     print "done."
  63.  
  64. if __name__ == "__main__":
  65.     main()
  66.  
  67. ## Output
  68. adam@wizard ~/Code/Python: python insert_some_couch_records.py
  69. ************************************************************
  70. * Adding test data...
  71. Adding {'name': 'a', 'time': 1}
  72. Adding {'name': 'a', 'time': 3}
  73. Adding {'name': 'a', 'time': 5}
  74. Adding {'name': 'a', 'time': 7}
  75. Adding {'name': 'a', 'time': 9}
  76. Adding {'name': 'a', 'time': 11}
  77. Adding {'name': 'a', 'time': 13}
  78. Adding {'name': 'a', 'time': 15}
  79. Adding {'name': 'a', 'time': 'sandbox'}
  80. Adding {'name': 'b', 'time': 1}
  81. Adding {'name': 'b', 'time': 3}
  82. Adding {'name': 'b', 'time': 5}
  83. Adding {'name': 'b', 'time': 7}
  84. Adding {'name': 'b', 'time': 9}
  85. Adding {'name': 'b', 'time': 11}
  86. Adding {'name': 'b', 'time': 13}
  87. Adding {'name': 'b', 'time': 15}
  88. Adding {'name': 'b', 'time': 'sandbox'}
  89.  
  90. ************************************************************
  91. * Adding design doc...
  92.  
  93. ************************************************************
  94. * Getting latest document for 'a'...
  95. {u'value': None, u'id': u'c4fa0242adc74e6db00be5f0bf1061ce', u'key': [u'a', 15]}
  96.  
  97. ************************************************************
  98. * Getting earliest after 4 for 'b'...
  99. {u'value': None, u'id': u'c4fa0242adc74e6db00be5f0bf104832', u'key': [u'b', 5]}
  100.  
  101. ************************************************************
  102. * Getting earliest after 11 for 'a'...
  103. {u'value': None, u'id': u'c4fa0242adc74e6db00be5f0bf106998', u'key': [u'a', 11]}
  104.  
  105. ************************************************************
  106. * Getting earliest after 1234 for 'b'...
  107. {u'value': None, u'id': u'c4fa0242adc74e6db00be5f0bf1011fd', u'key': [u'b', u'sandbox']}
  108.  
  109. done.