pyodps 获取表数据,向表写数据,行记录Record报错

来源:互联网 发布:有电影翻译软件 编辑:程序博客网 时间:2024/06/03 11:36

阿里云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)
... 

0 0
原创粉丝点击