2012-03-05 42 views
5

最近我一直在搞乱web.py,想从数据库中获取一些东西,并且返回一个“存储”对象。在我使用打电话给我信息的代码是:web.py数据库选择访问

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__的东西,那么你可以索引到对象,并希望得到一个值。

作为一个方面说明,我只是想你的代码,我得到sely是一个web.utils.IterBetter实例(返回0行,而不是在我的情况下,预计3)。所以我不能真正重现你的问题(但我自己有问题,可以这么说)。

+1

感谢名单(sely)以我想要的方式工作 – ATMA 2012-03-05 02:59:41

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

sely将储存的liststorage相同dict,但你可以obj.key访问,而不是obj["key"]参数。你可以做dict(obj)storage转换成dict

-1
在Windows

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

是确定的。你可以得到分数的价值。

在Ubuntu

你shuld做这样的

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

我不知道为什么,但它在我的电脑工作