编程语言
首页 > 编程语言> > python – 使用importRows上传FusionTables数据失败,出现HttpError 500:Backend Error

python – 使用importRows上传FusionTables数据失败,出现HttpError 500:Backend Error

作者:互联网

我使用Google APIs Client Library for Python更新Fusion Table并使用Fusion Tables API v1将行添加到Fusion Table.当我使用SQL INSERT查询方法一次一行地执行此操作时,我可以成功执行此操作.我还希望能够使用importRows方法更新Fusion Table.

我从文件’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?或者在使用这种方法时我还缺少什么?

解决方法:

自从发布这个问题以来,我已经了解到application / octet-stream类似于说类型是什么.我也弄清楚我使用importRows有什么问题. method documentation表明了这一点

“Default is UTF-8. Use 'auto-detect' if you are unsure of the encoding.”

我认为使用’自动检测’是确保我的请求被正确接收的最安全的方法.这是一个不正确的假设:将编码更改为’utf-8’会导致importRows请求成功.

标签:python,google-api,google-fusion-tables,google-api-python-client
来源: https://codeday.me/bug/20190624/1278200.html