2017-04-12 80 views
1

我查询大量查询如下:获得的结果从JSON大量查询与谷歌-云蟒

client = bigquery.Client() 

query = """SELECT * FROM `{dataset}.{table}` 
    WHERE [email protected] 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 

这将返回像数据:

[ 
    "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实现这个自己,但看起来这应该是在图书馆,因为它已经发生了重复的元素。

我怎样才能获得的BigQuery查询结果JSON使用这个库格式化?例如: -

{ 
    "timestamp": "Tue, 11 Apr 2017 03:18:52 GMT", 
    "id": "A132", 
    "country": "United Kingdom", 
    [ 
     { 
      "endDate": "2012-12-05", 
      "startDate": "2011-12-27", 
      "statusCode": "Terminated" 
     } 
    ] 
} 

回答

0

事实证明,代码很简单:

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