Python 3.x Boto3:使用';不在';用于DynamoDB中的扫描
我已经设法制作了一个筛选表达式,用于从扫描中筛选项目。Smth类似:Python 3.x Boto3:使用';不在';用于DynamoDB中的扫描,python-3.x,amazon-dynamodb,boto3,Python 3.x,Amazon Dynamodb,Boto3,我已经设法制作了一个筛选表达式,用于从扫描中筛选项目。Smth类似: users = [1, 2, 3] table.scan( FilterExpression=Attr('user_id').is_in(users) ) 我是否可以将其从筛选转换为排除,这样我将获得除ID为1、2、3的用户之外的所有用户。到目前为止,我找到的唯一方法是使用boto3.client,而不是表和低级语法。Smth是这样的: lst_elements = '' attr_elements = {} fo
users = [1, 2, 3]
table.scan(
FilterExpression=Attr('user_id').is_in(users)
)
我是否可以将其从筛选转换为排除,这样我将获得除ID为1、2、3的用户之外的所有用户。到目前为止,我找到的唯一方法是使用boto3.client,而不是表和低级语法。Smth是这样的:
lst_elements = ''
attr_elements = {}
for id in user_ids:
lst_element += 'user' + str(id)
attr_elements['user' + str(id)] = id
client.scan(
TableName='some_table_name',
FilterExpression="NOT (user_id IN ({}))".format(lst_element[:-1]),
ExpressionAttributeValues=attr_elements
)
这个解决方案对我来说很好,但看起来非常复杂。因此,如果您知道一种更好的方法,请添加您的答案。您可以使用
~
运算符轻松完成此操作:
users=[1,2,3]
table.scan(
FilterExpression=~Attr('user_id')。是否在(users)中
)
查看中的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。再次检查上面的源代码链接以了解详细信息。