2012-03-05 9 views
5

He estado jugando con web.py últimamente y quería tomar algunas cosas de un DB y me devuelve un objeto de "Almacenamiento". un código que estoy utilizando para llamar a mi información es:base de datos web.py seleccionar acceso

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

cuando sely corre me cae el texto así:

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

al imprimir sely la línea de almacenamiento sale. ¿Cómo puedo sacar el diccionario de este objeto?

Respuesta

4

Un truco general de Python para tratar con API desconocidas es utilizar el dir builtin. Pruebe dir(sely) en el intérprete para ver qué variables de miembro y funciones están definidas para el objeto que obtiene.

  • Si ves algo como __iter__, puede llamar list(sely) para convertir los resultados a una lista, y en general iterar sobre el objeto en un bucle.
  • Si ve algo como __getitem__, puede indexar en el objeto y esperar recuperar un valor.

Como nota al margen, he intentado a cabo su código y llego a ser un selyweb.utils.IterBetter instancia (que devuelve 0 filas, en lugar de esperar 3 en mi caso). Entonces realmente no puedo reproducir tu problema (pero tengo mis propios problemas, por así decirlo).

+1

Gracias (sely) funcionó como yo lo quería – ATMA

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

sely habría una list de almacenamientos, storage es lo mismo que dict, pero se puede acceder a los argumentos con obj.key, en lugar de obj["key"]. Puede hacer dict(obj) para convertir storage en dict.

-1

en ventanas

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

está bien. puedes obtener el valor del puntaje

pero

en ubuntu

que shuld haces así

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

no sé por qué pero funciona en mi computadora lista

Cuestiones relacionadas