Symfoware

Symfowareについての考察blog

RiakのLink機能をPythonクライアントで操作する

RiakのLink機能をJavaで試してみました。
RiakのLink機能をJavaクライアントで操作する

今度はPythonで試してみます。

Pythonクライアントのインストールはこちら。
RiakにPythonで接続する(riak-python-client使用)




サンプル



Javaと同様のことをやってみました。


  1. # -*- coding:utf-8 -*-
  2. import riak
  3. #riakサーバーに接続
  4. myClient = riak.RiakClient(host='192.168.1.5', pb_port=8087, protocol='pbc')
  5. #バケットを作成
  6. myBucket = myClient.bucket('test')
  7. anko = myBucket.new('anko', data=[u'Ⅳ号戦車D型'])
  8. anko.store()
  9. class2 = myBucket.new('class2', data=[u'高校二年生'])
  10. class2.store()
  11. member = myBucket.new('nishizumi', data=[u'西住 みほ'])
  12. member.add_link(anko)
  13. member.add_link(class2)
  14. member.store()
  15. #登録したデータを取得
  16. fetched = myBucket.get('nishizumi')
  17. print(fetched.data[0])
  18. #取得したデータに関連しているリンク情報を取得
  19. for link in fetched.links:
  20.     print('--------------')
  21.     # 結果はタプル 0:Bucket 1:Keyとなっている
  22.     print('Bucket:%s Key:%s' % (link[0], link[1]))
  23.     link_fetch = myClient.bucket(link[0]).get(link[1])
  24.     print(link_fetch.data[0])




昔のドキュメントを見ると、get_linksでリンク情報が取得できたようなのですが、
この機能は削除されたようです。
Tutorial (old)


また、Unicodeオブジェクトを直接登録することが出来なかったので、
一旦リストとして登録しています。

登録しようとすると、こんなエラーになりました。


Traceback (most recent call last):
File "sample.py", line 11, in <module>
    key = myBucket.new('dic', data=val)
File "/usr/local/lib/python2.7/dist-packages/riak-2.0.1-py2.7.egg/riak/bucket.py", line 157, in new
    raise TypeError('Unicode data values are not supported.')





プログラムを実行してみると、以下の結果が表示されます。


$ python sample.py
西住 みほ
--------------
Bucket:test Key:anko
Ⅳ号戦車D型
--------------
Bucket:test Key:class2
高校二年生

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2013/10/28(月) 21:16:47|
  2. Riak
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
次のページ