我最近一直在搞乱web.py并希望从数据库中获取一些内容并将其返回给我一个“存储”对象。我用来调用我的信息的代码是:
db = web.database(dbn='sqlite', db='sqlfile.sqlite')
sely = db.select('carp', order="id ASC")
当塞利运行时,它会把我这样的文字丢掉:
<Storage {'lvl': 0, 'symbol': u'formb', 'logged': u'false', 'id': 1, 'display': u'Classic'}>
当你打印出来时,存储线就会出来。如何从这个对象中获取字典?
答案 0 :(得分:4)
处理未知API的一般Python技巧是使用dir
builtin。在解释器中尝试dir(sely)
,看看为你得到的对象定义了哪些成员变量和函数。
__iter__
之类的内容,可以调用list(sely)
将结果转换为列表,并通常在循环中遍历对象。__getitem__
之类的内容,那么您可以索引该对象并希望获得一个值。作为旁注,我只是尝试了你的代码,我得到sely
为web.utils.IterBetter
实例(在我的情况下返回0行,而不是预期的3行)。所以我无法真正重现你的问题(但我自己也有问题,可以这么说)。
答案 1 :(得分:3)
db = web.database(dbn='sqlite', db='sqlfile.sqlite')
sely = db.select('carp', order="id ASC").list()
sely
将是list
个存储空间,storage
与dict
相同,但您可以使用obj.key
而不是{{}来访问参数1}}。您可以obj["key"]
将dict(obj)
转换为storage
。
答案 2 :(得分:-1)
return list(db.select('top',what='score',where="name = $id",vars=locals())
没问题。你可以得到分数的价值。
但是
在ubuntu中 你可以这样做吗 db.select('top',what='score',where="name = $id",vars=locals())[0]["score"]
我不知道为什么,但它可以在我的电脑上运行