AWS DynamoDB ExclusiveStartKey default value
I'm trying to make a query to DynamoDB, and if a LastEvaluatedKey
is returned (meaning the query exceeds 1 MB) I want to make other queries in order to fetch all the required data from the table, using LastEvaluatedKey
as ExclusiveStartKey
for the next query.
This is the code I have for now:
query_response = table.query(
KeyConditionExpression=Key('brand').eq(brand)
)
pagination_key = None
if 'LastEvaluatedKey' in query_response:
pagination_key = query_response['LastEvaluatedKey']
while pagination_key:
next_query_response = table.query(
KeyConditionExpression=Key('brand').eq(brand),
ExclusiveStartKey=pagination_key
)
However, I'd like to refacto this code by extracting the query into a method, passing it pagination_key as an argument. To do this, I'd have to be able to either set ExclusiveStartKey
to False
, None
or some other default value for the first call but I didn't find anything on this, or I'd have to be able to exclude the ExclusiveStartKey
alltogether, but I don't know how to do this either.
python amazon-dynamodb
add a comment |
I'm trying to make a query to DynamoDB, and if a LastEvaluatedKey
is returned (meaning the query exceeds 1 MB) I want to make other queries in order to fetch all the required data from the table, using LastEvaluatedKey
as ExclusiveStartKey
for the next query.
This is the code I have for now:
query_response = table.query(
KeyConditionExpression=Key('brand').eq(brand)
)
pagination_key = None
if 'LastEvaluatedKey' in query_response:
pagination_key = query_response['LastEvaluatedKey']
while pagination_key:
next_query_response = table.query(
KeyConditionExpression=Key('brand').eq(brand),
ExclusiveStartKey=pagination_key
)
However, I'd like to refacto this code by extracting the query into a method, passing it pagination_key as an argument. To do this, I'd have to be able to either set ExclusiveStartKey
to False
, None
or some other default value for the first call but I didn't find anything on this, or I'd have to be able to exclude the ExclusiveStartKey
alltogether, but I don't know how to do this either.
python amazon-dynamodb
I know you can simply omit the ExclusiveStartKey or set it to null in the java sdk. Have you tried simply omitting that argument or setting it to None? What were your results?
– Matthew Pope
Nov 15 '18 at 16:56
add a comment |
I'm trying to make a query to DynamoDB, and if a LastEvaluatedKey
is returned (meaning the query exceeds 1 MB) I want to make other queries in order to fetch all the required data from the table, using LastEvaluatedKey
as ExclusiveStartKey
for the next query.
This is the code I have for now:
query_response = table.query(
KeyConditionExpression=Key('brand').eq(brand)
)
pagination_key = None
if 'LastEvaluatedKey' in query_response:
pagination_key = query_response['LastEvaluatedKey']
while pagination_key:
next_query_response = table.query(
KeyConditionExpression=Key('brand').eq(brand),
ExclusiveStartKey=pagination_key
)
However, I'd like to refacto this code by extracting the query into a method, passing it pagination_key as an argument. To do this, I'd have to be able to either set ExclusiveStartKey
to False
, None
or some other default value for the first call but I didn't find anything on this, or I'd have to be able to exclude the ExclusiveStartKey
alltogether, but I don't know how to do this either.
python amazon-dynamodb
I'm trying to make a query to DynamoDB, and if a LastEvaluatedKey
is returned (meaning the query exceeds 1 MB) I want to make other queries in order to fetch all the required data from the table, using LastEvaluatedKey
as ExclusiveStartKey
for the next query.
This is the code I have for now:
query_response = table.query(
KeyConditionExpression=Key('brand').eq(brand)
)
pagination_key = None
if 'LastEvaluatedKey' in query_response:
pagination_key = query_response['LastEvaluatedKey']
while pagination_key:
next_query_response = table.query(
KeyConditionExpression=Key('brand').eq(brand),
ExclusiveStartKey=pagination_key
)
However, I'd like to refacto this code by extracting the query into a method, passing it pagination_key as an argument. To do this, I'd have to be able to either set ExclusiveStartKey
to False
, None
or some other default value for the first call but I didn't find anything on this, or I'd have to be able to exclude the ExclusiveStartKey
alltogether, but I don't know how to do this either.
python amazon-dynamodb
python amazon-dynamodb
edited Nov 12 '18 at 14:56
Aqueous Carlos
293213
293213
asked Nov 12 '18 at 14:40
nicojoncknicojonck
334
334
I know you can simply omit the ExclusiveStartKey or set it to null in the java sdk. Have you tried simply omitting that argument or setting it to None? What were your results?
– Matthew Pope
Nov 15 '18 at 16:56
add a comment |
I know you can simply omit the ExclusiveStartKey or set it to null in the java sdk. Have you tried simply omitting that argument or setting it to None? What were your results?
– Matthew Pope
Nov 15 '18 at 16:56
I know you can simply omit the ExclusiveStartKey or set it to null in the java sdk. Have you tried simply omitting that argument or setting it to None? What were your results?
– Matthew Pope
Nov 15 '18 at 16:56
I know you can simply omit the ExclusiveStartKey or set it to null in the java sdk. Have you tried simply omitting that argument or setting it to None? What were your results?
– Matthew Pope
Nov 15 '18 at 16:56
add a comment |
1 Answer
1
active
oldest
votes
I found an easy way of building the parameters:
query_params = 'KeyConditionExpression': Key('brand').eq(brand)
if pagination_key:
query_params['ExclusiveStartKey'] = pagination_key
query_response = table.query(query_params)
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53264490%2faws-dynamodb-exclusivestartkey-default-value%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I found an easy way of building the parameters:
query_params = 'KeyConditionExpression': Key('brand').eq(brand)
if pagination_key:
query_params['ExclusiveStartKey'] = pagination_key
query_response = table.query(query_params)
add a comment |
I found an easy way of building the parameters:
query_params = 'KeyConditionExpression': Key('brand').eq(brand)
if pagination_key:
query_params['ExclusiveStartKey'] = pagination_key
query_response = table.query(query_params)
add a comment |
I found an easy way of building the parameters:
query_params = 'KeyConditionExpression': Key('brand').eq(brand)
if pagination_key:
query_params['ExclusiveStartKey'] = pagination_key
query_response = table.query(query_params)
I found an easy way of building the parameters:
query_params = 'KeyConditionExpression': Key('brand').eq(brand)
if pagination_key:
query_params['ExclusiveStartKey'] = pagination_key
query_response = table.query(query_params)
answered Dec 7 '18 at 11:26
nicojoncknicojonck
334
334
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53264490%2faws-dynamodb-exclusivestartkey-default-value%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I know you can simply omit the ExclusiveStartKey or set it to null in the java sdk. Have you tried simply omitting that argument or setting it to None? What were your results?
– Matthew Pope
Nov 15 '18 at 16:56