web.py数据库选择访问权限

时间:2012-03-05 02:30:20

标签: python web.py

我最近一直在搞乱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'}>

当你打印出来时,存储线就会出来。如何从这个对象中获取字典?

3 个答案:

答案 0 :(得分:4)

处理未知API的一般Python技巧是使用dir builtin。在解释器中尝试dir(sely),看看为你得到的对象定义了哪些成员变量和函数。

  • 如果您看到__iter__之类的内容,可以调用list(sely)将结果转换为列表,并通常在循环中遍历对象。
  • 如果您看到__getitem__之类的内容,那么您可以索引该对象并希望获得一个值。

作为旁注,我只是尝试了你的代码,我得到selyweb.utils.IterBetter实例(在我的情况下返回0行,而不是预期的3行)。所以我无法真正重现你的问题(但我自己也有问题,可以这么说)。

答案 1 :(得分:3)

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

sely将是list个存储空间,storagedict相同,但您可以使用obj.key而不是{{}来访问参数1}}。您可以obj["key"]dict(obj)转换为storage

答案 2 :(得分:-1)

Windows中的

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"]

我不知道为什么,但它可以在我的电脑上运行