我使用Google APIs Client Library for Python更新Fusion Table并使用Fusion Tables API v1将行添加到Fusion Table。当我使用SQL INSERT查询方法一次一行地执行此操作时,我可以成功执行此操作。我还希望能够使用importRows
方法更新Fusion表。
我从文件'testCsv.csv'开始,并希望将其完全导入现有的Fusion Table。对此here进行了很好的概念性解释。
概念性示例解释了API是否接受了图像,但是为了更新Fusion Table,类型必须是“application / octet-stream”。
我尝试将importRows
方法与以下代码一起使用(注意:service
是经过身份验证的API连接):
from apiclient.discovery import build
from apiclient.http import MediaFileUpload
.
.
.
mediaCsv=MediaFileUpload(csvFileName, mimetype='application/octet-stream')
request = service.table().importRows(tableId=wrrTweetsID, media_body=mediaCsv,
startLine=1, encoding='auto-detect')
response = request.execute()
当我执行此代码时,我收到此错误消息:
raise HttpError(resp, content, uri=self.uri)
apiclient.errors.HttpError: <HttpError 500 when requesting
"https://www.googleapis.com/upload/fusiontables/v1/tables/--table_id--/import?uploadType=media&alt=json&startLine=1&encoding=auto-detect"
returned "Backend Error">
我的问题是,我是否需要对.csv
执行某些操作才能将其转换为application/octet-stream
?或者在使用这种方法时我还缺少什么?
答案 0 :(得分:4)
自发布此问题以来,我了解到application/octet-stream
类似于说类型是什么。我也弄清楚使用importRows
时出了什么问题。 method documentation表示
&#34;默认为UTF-8。如果您不确定编码,请使用
'auto-detect'
。&#34;
我认为使用'auto-detect'
是确保我的请求得到正确接收的最安全方法。这是一个不正确的假设:将编码更改为'utf-8'
会导致importRows
请求成功。