2012-03-05 5 views
5

私は最近web.pyを使いこなしていて、dbからいくつかのものを取得して、 "Storage"オブジェクトを返してきたかったのです。私は私の情報を呼び出すために使用していたコードは次のとおりです。web.py database select access

db = web.database(dbn='sqlite', db='sqlfile.sqlite') 
sely = db.select('carp', order="id ASC") 

SELY実行するとき、それはそうのようなテキスト私をドロップアウトする:あなたがプリントアウトしたときに

<Storage {'lvl': 0, 'symbol': u'formb', 'logged': u'false', 'id': 1, 'display': u'Classic'}>

がSELYストレージラインが出てきます。このオブジェクトから辞書を取得するにはどうすればよいですか?

答えて

4

未知のAPIを扱う一般的なPythonのトリックは、dir builtinを使用することです。インタプリタでdir(sely)を試して、取得するオブジェクトにどのようなメンバー変数と関数が定義されているかを確認してください。

  • あなたが__iter__のようなものが表示されている場合、あなたはリストに結果を変換するlist(sely)を呼び出し、そして一般的にループ内のオブジェクトを反復処理することができます。
  • __getitem__のようなものが表示された場合は、オブジェクトにインデックスを付けて値を取得することができます。サイドノートとして

、私はあなたのコードを試してみたと私はselyweb.utils.IterBetter(0行を返すのではなく、私の場合は3を予想)のインスタンスであることを取得します。だから私はあなたの問題を本当に再現することはできません。

+1

おかげリストの作品私はそれが欲しかった方法で働いた – ATMA

3
db = web.database(dbn='sqlite', db='sqlfile.sqlite') 
sely = db.select('carp', order="id ASC").list() 

selystoragedictと同じですが、あなたの代わりにobj["key"]の、obj.keyを引数にアクセスすることができ、ストレージのlistだろう。 dict(obj)を入力してstoragedictに変換することができます。窓

return list(db.select('top',what='score',where="name = $id",vars=locals())

-1

はokです。あなたはスコアの価値を得ることができます。

が、Ubuntuの

あなたはこの

db.select('top',what='score',where="name = $id",vars=locals())[0]["score"]

のようにそれを行うshuld(SELY)私はなぜ知らないが、それは私のコンピュータに

関連する問題