1. 范围读

  1. # 设置范围读的起始主键。
  2. inclusive_start_primary_key = [('uid', INF_MIN), ('gid', INF_MIN)]
  3. # 设置范围读的结束主键。
  4. exclusive_end_primary_key = [('uid', INF_MAX), ('gid', INF_MAX)]
  5. # 查询所有列。
  6. columns_to_get = []
  7. # 每次最多返回90行,如果总共有100个结果,首次查询时指定limit=90,则第一次最多返回90,最少可能返回0个结果,但是next_start_primary_key不为None。
  8. limit = 90
  9. # 设置过滤器。
  10. cond = CompositeColumnCondition(LogicalOperator.AND)
  11. cond.add_sub_condition(SingleColumnCondition("address", 'China', ComparatorType.EQUAL))
  12. cond.add_sub_condition(SingleColumnCondition("age", 50, ComparatorType.LESS_THAN))
  13. try:
  14. # 调用get_range接口。
  15. consumed, next_start_primary_key, row_list, next_token = client.get_range(
  16. table_name, Direction.FORWARD,
  17. inclusive_start_primary_key, exclusive_end_primary_key,
  18. columns_to_get,
  19. limit,
  20. column_filter=cond,
  21. max_version=1
  22. time_range = (1557125059000, 1557129059000) # start_time大于等于1557125059000,end_time小于1557129059000。
  23. )
  24. all_rows = []
  25. all_rows.extend(row_list)
  26. # 当next_start_primary_key不为空时,则继续读取。
  27. while next_start_primary_key is not None:
  28. inclusive_start_primary_key = next_start_primary_key
  29. consumed, next_start_primary_key, row_list, next_token = client.get_range(
  30. table_name, Direction.FORWARD,
  31. inclusive_start_primary_key, exclusive_end_primary_key,
  32. columns_to_get, limit,
  33. column_filter=cond,
  34. max_version=1
  35. )
  36. all_rows.extend(row_list)
  37. # 打印主键和属性列。
  38. for row in all_rows:
  39. print(row.primary_key, row.attribute_columns)
  40. print('Total rows: ', len(all_rows))
  41. # 客户端异常,一般为参数错误或者网络异常。
  42. except OTSClientError as e:
  43. print
  44. "get row failed, http_status:%d, error_message:%s" % (e.get_http_status(), e.get_error_message())
  45. # 服务端异常,一般为参数错误或者流控错误。
  46. except OTSServiceError as e:
  47. print
  48. "get row failed, http_status:%d, error_code:%s, error_message:%s, request_id:%s" % (e.get_http_status(), e.get_error_code(), e.get_error_message(), e.get_request_id())