dynamodb中使用boto3的表项数



我想从dynamo db表中获得项目的数量。

def urlfn():
if request.method == 'GET':
print("GET REq processing")
return render_template('index.html',count = table.item_count)

但是我没有得到真正的计数。我发现得到真正的计票有6个小时的延迟。有什么方法可以得到表中项目的真实计数吗?

假设在上面的代码中该表是一个已经定义的服务资源,您可以使用:

len(table.scan())

这将为您提供表中项目的最新计数。读取表中的每一项—对于非常大的表,这可能需要很长时间。表上,它使用阅读能力。因此,对于大多数实际用途来说,这真的不是一个很好的方法,

根据您的用例,这里还有一些其他选项:

  1. 添加一个元项,每次新文档添加到dynamo时更新。这是你想要的任意散列键/排序键组合的文档带有属性& value"每次向数据库中添加一个新项目时,为该项目添加1。

  2. 你忘记使用Dynamo。对不起,这听起来很刺耳,但是DynamoDB是一个非sql数据库,试图以与传统关系数据库系统相同的方式使用它是愚蠢的。#"行"不是发电机的设计,因为这不是它的用例范围。Dynamo中没有行——有文档,这些文档是分区的,你每次访问一小块文档——这意味着后端架构不适合在任何给定时间知道整个系统中有什么(因此有6小时的延迟)

最新更新