使用Python从AWS Lambda中的BigQuery客户端提取JSON对象

使用Python从AWS Lambda中的BigQuery客户端提取JSON对象,json,python-2.7,amazon-web-services,google-bigquery,aws-lambda,Json,Python 2.7,Amazon Web Services,Google Bigquery,Aws Lambda,我正在AWS lambda(Python 2.7运行时)中通过google.cloud.bigquery.Client.query包运行SQL查询。从查询中提取的本机BQ对象是BigQuery行(),即 行((u'exampleEmail@gmail.com“,u'XXX1234XXX'),{u'email':0,u'email_id':1}) 我需要将其转换为Json,即 [{'email_id':'XXX1234XXX','email':'exampleEmail@gmail.com“}]

我正在AWS lambda(Python 2.7运行时)中通过
google.cloud.bigquery.Client.query
包运行SQL查询。从查询中提取的本机BQ对象是
BigQuery行()
,即

行((u'exampleEmail@gmail.com“,u'XXX1234XXX'),{u'email':0,u'email_id':1})

我需要将其转换为Json,即

[{'email_id':'XXX1234XXX','email':'exampleEmail@gmail.com“}]

在本地运行时,我可以调用行上的python Dict函数对其进行转换,即

queryJob = bigquery.Client.query(sql)
list=[]
for row in queryJob.result():
    ** at this point row = the BQ sample Row object shown above **
    tmp = dict(row)
    list.append(tmp)`
但当我将其加载到AWS Lambda时,它会抛出错误:

ValueError:字典更新序列元素#0的长度为22;2是必需的

我尝试过以不同的方式强制它,将它分成多个部分等,但无法将其转换为所需的JSON格式

我对将QueryJob转换成Pandas数据帧,然后再转换成JSON对象的兔子洞进行了简单的研究,JSON对象也在本地工作,但在AWS Lambda中遇到了
numpy
包错误,这似乎是一个已知的问题

我觉得这应该有一个简单的解决方案,但只是还没有找到它

试着这样做

`


`

我不知道这是否有帮助,但您可以使用查询本身的内部将每一行转换为JSON字符串。我尝试了这一点,但导出仍然是BigQuery row()格式,即使内部现在已格式化为JSON字符串。我要做的是将该行格式转换为JSON。对,您仍然需要提取每个行对象的内容,但至少是JSON格式。
L = []
sql = (#sql_statement)
query_job = client.query(sql)  # API request
query_job.result()
for row in query_job:
    email_id= row.get('email_id')
    email= row.get('email')
    L.append([email_id, email])