From 80b5a2be2d907478ecaa8224fbc9e175837e9491 Mon Sep 17 00:00:00 2001 From: Hraban Luyat Date: Mon, 15 Feb 2016 17:53:48 +0000 Subject: [PATCH 1/2] BQ: Empty array when no results Better than KeyError --- bigquery/api/sync_query.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bigquery/api/sync_query.py b/bigquery/api/sync_query.py index db64acd9df8e..62c5ef8af280 100755 --- a/bigquery/api/sync_query.py +++ b/bigquery/api/sync_query.py @@ -66,7 +66,7 @@ def main(project_id, query, timeout, num_retries): pageToken=page_token, **query_job['jobReference']).execute(num_retries=2) - print(json.dumps(page['rows'])) + print(json.dumps(page.get('rows', []))) page_token = page.get('pageToken') if not page_token: From ad6ebb3ac9bf045948afc80fc54935b83a617c63 Mon Sep 17 00:00:00 2001 From: Hraban Luyat Date: Tue, 16 Feb 2016 18:29:42 +0000 Subject: [PATCH 2/2] BQ: JSON on query output, even when paging For composability with JSON capable tools in a unix pipeline. See #184 --- bigquery/api/sync_query.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bigquery/api/sync_query.py b/bigquery/api/sync_query.py index 62c5ef8af280..5a8668c2b66b 100755 --- a/bigquery/api/sync_query.py +++ b/bigquery/api/sync_query.py @@ -60,17 +60,21 @@ def main(project_id, query, timeout, num_retries): # [START paging] # Page through the result set and print all results. + results = [] page_token = None + while True: page = bigquery.jobs().getQueryResults( pageToken=page_token, **query_job['jobReference']).execute(num_retries=2) - print(json.dumps(page.get('rows', []))) + results.extend(page.get('rows', [])) page_token = page.get('pageToken') if not page_token: break + + print(json.dumps(results)) # [END paging] # [END run]