1. Query & Scan
Query는 특정 값을 검색했을 때 나타나는 결과를 조회할 때 사용된다.
get_items()와 기능이 유사하지만 query가 더 자세한 조건을 통해 값을 가져오는것이 가능하다.
Scan은 Query와 다르게 특정 ㄱ밧을 지정하여 불러올 수도 있지만, 주로 호출하고자 하는 값의 범위를 검색 조건으로 할 때 사용된다. FilterExpression을 내부 속성으로써 필터링을 위한 용도로 사용된다.
Query와 Scan을 사용하기 위해서는 아래에 작성된 것처럼 추가 클래스 호출이 필요하다.
from boto3.dynamodb.conditions import Key, Attr
Query
# query.py
import boto3
from boto3.dynamodb.conditions import Key, Attr
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users')
response = table.query(
KeyConditionExpression=Key('username').eq('johndoe')
)
items = response['Items']
print(items)
예제 코드는 위와 같다. 코드는 username 키가 johndoe값을 가지는 items를 출력하기 위해 작성되었다.
코드를 실행하면 바로 결과값이 출력된다. 결과값에서 johndoe의 items가 출력된다.
Scan
# scan.py
import boto3
from boto3.dynamodb.conditions import Key, Attr
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users')
response = table.scan(
FilterExpression=Attr('age').lt(27)
)
items = response['Items']
print(items)
예제 코드는 위와 같다. FilterExpression을 사용하여 나이를 지정하고 lt(less than)을 27로 지정하여 age가 27보다 작은 items를 테이블에서 scan한다.
scan.py를 실행하면 위와 같이 결과가 출력된다.
# scan2.py
import boto3
from boto3.dynamodb.conditions import Key, Attr
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users')
response = table.scan(
FilterExpression=Attr('first_name').begins_with('J') & Attr('account_type').eq('super_user')
)
items = response['Items']
print(items)
위 코드는 first_name 값이 J로 시작(begins_with)하고 account_type이 super_user와 동일한 대상에 대해 값을 출력하는 것이다.
코드를 실행하면 조건에 맞는 결과물이 출력된 것을 볼 수 있다.
# scan3.py
import boto3
from boto3.dynamodb.conditions import Key, Attr
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users')
response = table.scan(
FilterExpression=Attr('address.state').eq('CA')
)
items = response['Items']
print(items)
세 번째 예제 코드는 address.state 속성값이 CA와 같은(eq) 값을 scan하여 출력하는 것이다.
코드를 실행하면 조건에 맞는 결과가 출력된다.
'AWS CLI, Boto3' 카테고리의 다른 글
DynamoDB with Boto3(Python) 3편 (0) | 2021.07.18 |
---|---|
DynamoDB with Boto3(Python) 2편 (0) | 2021.07.16 |
DynamoDB with Boto3(Python) 1편 (0) | 2021.07.16 |
Boto3를 활용한 S3 bucket 관리 (0) | 2021.07.15 |
boto3 설치와 설정 및 간단하게 사용해보기 (0) | 2021.07.14 |