Python运算符中的GCP Bigquery异常处理

yacmzcpb  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(129)

我试图捕捉任何错误,当我通过气流中的Python运算符在Bigquery中运行查询时。但我无法获得预期的行为。它不会抛出任何异常。
这就是我所尝试的。

  1. from google.cloud import bigquery
  2. client = bigquery.Client(project='project_id')
  3. query = "select 1 as cnt from gudb.TEST001 limit 1"
  4. try:
  5. client.query(query)
  6. except Exception as e:
  7. print(e)

它不会抛出任何异常,即使表在bigquery中不可用。但当我试图存储变量时

  1. var=client.query(query) # in try
  2. for x in var:
  3. print(x)

我可以看到存储在该var中的异常。但是我希望在运行tryexcept块时在stdout中提示异常。
有人可以请让我知道,如何获得例外

krcsximq

krcsximq1#

您可以通过调用result函数来查找查询的错误状态。对于您的需求,您可以考虑以下代码:

  1. try:
  2. client.query(query).result()
  3. except Exception as e:
  4. print(e)

示例:

  1. def bigquerytest():
  2. client = bigquery.Client()
  3. query = "SELECT * FROM `my-project-36069-km.demo12.vvvvvvv`"
  4. try:
  5. query_job = client.query(query)
  6. query_job.result()
  7. except Exception as s:
  8. print(f'The error is {s}')
  9. with DAG(dag_id='ne',start_date=datetime(2021, 4, 5, 15, 0),schedule_interval='@daily',catchup=False) as dag:
  10. t1=BashOperator(task_id='print',bash_command='echo finished')
  11. t2=PythonOperator(task_id='bigquery',python_callable=bigquerytest)
  12. t2>>t1

错误:

展开查看全部

相关问题