阿里云pyodps文档 http://pyodps.readthedocs.io/zh_CN/latest/base-tables-zh.html
获取表数据,向表写数据,行记录Record报错
报错信息:
>>> with mytable.open_writer(partition='pt=test') as writer:
... writer.write([1,2])
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/contextlib.py", line 16, in __enter__
return self.gen.next()
File "/usr/lib/python2.6/site-packages/odps/models/table.py", line 403, in open_writer
upload_id=upload_id, **kw)
File "/usr/lib/python2.6/site-packages/odps/tunnel/tabletunnel/tabletunnel.py", line 54, in create_upload_session
compress_option=compress_option)
File "/usr/lib/python2.6/site-packages/odps/tunnel/tabletunnel/uploadsession.py", line 57, in __init__
self._init()
File "/usr/lib/python2.6/site-packages/odps/tunnel/tabletunnel/uploadsession.py", line 71, in _init
resp = self._client.post(url, {}, params=params, headers=headers)
File "/usr/lib/python2.6/site-packages/odps/rest.py", line 120, in post
return self.request(url, 'post', data=data, **kwargs)
File "/usr/lib/python2.6/site-packages/odps/rest.py", line 112, in request
errors.throw_if_parsable(res)
File "/usr/lib/python2.6/site-packages/odps/errors.py", line 78, in throw_if_parsable
raise NoSuchObject('No such object.')
odps.errors.NoSuchObject: No such object.
解决:
找不到分区,也就是mytable表没有test分区
可以先添加分区
mytable.create_partition('pt=test')
有test分区后就能写如数据了
>>> with mytable.open_writer(partition='pt=test') as writer:
... records = [[111],
... [222],
... [333],
... [444]]
... writer.write(records)
报错信息:
>>> with mytable.open_writer(partition='pt=test') as writer:
... records=[1,2,3,4]
... writer.writer(records)
...
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "/usr/lib64/python2.6/contextlib.py", line 34, in __exit__
self.gen.throw(type, value, traceback)
File "/usr/lib/python2.6/site-packages/odps/models/table.py", line 477, in open_writer
yield RecordWriter()
File "<stdin>", line 3, in <module>
AttributeError: 'RecordWriter' object has no attribute 'writer'
>>>
解决:
writer.write(records)中第二个writer多个r,如下
>>>
>>> with mytable.open_writer(partition='pt=test') as writer:
... records = [[111],
... [222],
... [333],
... [444]]
... writer.write(records)
...