datastore low level っぽく pythonを使ってみる|google app engine

まずは、
.get_by_key_name()を調べてみました。
google\appengine\ext\db\__init__.py

    keys = [datastore.Key.from_path(cls.kind(), name, parent=parent)
            for name in key_names]
    if multiple:
      return get(keys, config=config)
    else:
      return get(keys[0], config=config)

こうなっていたので
Key.from_pathから kindと nameにkey_nameにしていたものを入れればOKと

    key = Key.from_path('myitem', 'my_test')
    entity = Get(key) 

みたいな。

Putして Getしてみる。
Blob , datetime データはどうなる?

    entity = Entity("bbtune",name="test2")
    bdata = Blob(zlib.compress('tttttttttttttt'))
    tdata = datetime.datetime.fromtimestamp(float(130000000))
    entity.update({
      'p': 100,
      'bdata': bdata,
      'tdata': tdata
      })
    Put(entity)

    # ここからGET
    key = Key.from_path('bbtune', 'test2')
    entity = Get(key) 
    ks = entity.keys()
    vs = entity.values()
    its = entity.items()
    data = {}
    for i in range(len(its)):
      data[its[i][0]] = its[i][1]
    
    print 'Content-type: text/plain'
    print ''
    for key in data:
      if key == 'tdata' :
        print data[key].strftime("%Y/%m/%d %H:%M:%S")
      elif key == 'bdata':
        print zlib.decompress(data[key])
      else:
        print data[key]

みたいな感じで上手く出来ました。
db.Modelを継承したクラスとdatastoreで自分で書いたクラスは読み書き相互利用問題ありませんでした。
若干軽くなるかもしれないけど、ほとんど変わらないかな

次は、datastore直接使った場合と db.Modelを使った場合の大量データでCPU時間などを比べてみます。

This entry was posted on 火曜日, 5月 10th, 2011 at 12:57 AM and is filed under blog, Google App Engine, Python. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Unityによるゲームを公開しております iOS/Android
https://itunes.apple.com/jp/app/lost-knight-3d-action/id900917032
https://play.google.com/store/apps/details?id=com.groundroad.runknight

各種開発支援・機能開発等小さいお仕事などもお請けしております。
unity開発支援, PHPシステム開発, javascript/html5 フロント開発, titanium mobileアプリ開発
お気軽にお問い合わせください
大崎・五反田近郊での対面でのお打ち合わせはいつでも可能です。