Python BigQuery API是否变更?run_sync_query方法报错求助
问题解答:AttributeError: 'Client' object has no attribute 'run_sync_query'
没错,你碰到的这个问题完全是因为Google Cloud BigQuery Python客户端API发生了版本变更——run_sync_query这个方法已经被正式弃用并从新版本的API中移除了。
替代方案:使用client.query()方法
现在官方推荐的查询方式是使用Client.query(),它会返回一个QueryJob对象,你可以通过调用这个对象的result()方法来同步获取查询结果(这个方法会阻塞直到查询完成,和你之前用run_sync_query的同步效果一致)。
修改后的代码示例
把你原来的代码改成下面这样就可以正常运行了:
from google.cloud import bigquery import codecs bigquery_client = bigquery.Client('myprojectID') # 提交查询请求 query_job = bigquery_client.query(""" SELECT [ my query here ] FROM `[...]`; """) # 等待查询完成并获取结果 query_results = query_job.result() # 如果你需要遍历结果,可以这样做 for row in query_results: print(row)
额外补充
如果习惯用pandas处理数据,还可以直接把查询结果转换成DataFrame:
import pandas as pd df = query_job.to_dataframe()
这个新的API设计更灵活,既支持同步获取结果(通过result()),也支持异步处理查询任务,符合Google Cloud API的统一设计风格。
内容的提问来源于stack exchange,提问作者Mark Ginsburg
相关产品推荐
相关产品推荐

