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