The simplest way to interact with BigQuery is to issue SQL commands via the Python client for BigQuery.
import datetime
import decimal
import json
from google.cloud import bigquery
def get_bq_json(request):
dataset = "hpwg-297320.movebank"
table = "wildebeest"
query = f"""
SELECT
individual_local_identifier, timestamp, location_long, location_lat,
FROM {dataset}.{table}
LIMIT 10000
"""
bq_client = bigquery.Client()
query_job = bq_client.query(query)
results = query_job.result()
rows = []
for row in results:
obj = {}
for key, val in row.items():
v = val
if isinstance(val, decimal.Decimal) == True:
v = float(val)
if isinstance(val, datetime.datetime) == True:
v = val.isoformat()
obj[key] = v
rows.append(obj)
return json.dumps(rows)
Note that certain types, like decimal.Decimal and datetime.datetime, cannot be serialized to JSON. To avoid errors they need to be converted to serializable types like float or str, respectively.
from django.http import HttpResponse
...
return HttpResponse(data_from_get_bq_json)
from flask import Response
...
return Response(data_from_get_bq_json)