首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用google-cloud-python从BigQuery获取JSON格式的结果

使用google-cloud-python从BigQuery获取JSON格式的结果
EN

Stack Overflow用户
提问于 2017-04-12 23:11:44
回答 1查看 4K关注 0票数 6

我通过google-cloud-python查询BigQuery,如下所示:

代码语言:javascript
复制
client = bigquery.Client()

query = """SELECT * FROM `{dataset}.{table}`
  WHERE id=@id LIMIT 1""".format(dataset=dataset,
                                 table=table)

param = ScalarQueryParameter('id', 'STRING', id)
query = client.run_sync_query(query, query_parameters=[param])
query.use_legacy_sql = False
query.timeout_ms = 1000
query.run()

assert query.complete

try:
    results = query.rows[0]
except IndexError:
    results = None

这将返回如下数据:

代码语言:javascript
复制
[
    "Tue, 11 Apr 2017 03:18:52 GMT",
    "A132",
    "United Kingdom",
    [
        {
            "endDate": "2012-12-05",
            "startDate": "2011-12-27",
            "statusCode": "Terminated"
        }
    ]
]

重复字段已转换为JSON。但我也希望将其余数据转换为JSON。我可以通过检查query.schema来实现它,但它似乎应该在库中,因为它已经在重复的元素中发生了。

如何使用这个库获得格式化为JSON的BigQuery查询结果?例如:

代码语言:javascript
复制
{
    "timestamp": "Tue, 11 Apr 2017 03:18:52 GMT",
    "id": "A132",
    "country": "United Kingdom",
    [
        {
            "endDate": "2012-12-05",
            "startDate": "2011-12-27",
            "statusCode": "Terminated"
        }
    ]
}
EN

回答 1

Stack Overflow用户

发布于 2017-04-13 18:13:37

事实证明,代码非常简单:

代码语言:javascript
复制
field_names = [f.name for f in query.schema]

try:
    raw_results = query.rows[0]
    zipped_results = zip(field_names, raw_results)
    results = {x[0]: x[1] for x in zipped_results}
except IndexError:
    results = None
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43373426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档