Pregunta

Estoy tratando de comparar la clave para filtrar los resultados en gql en python, pero la comparación directa ni typecasting a int obras. Hay tanto estoy obligado a hacer un trabajo en torno a como se menciona en líneas sin comentar a continuación. Cualquier pista.

row = self.request.get("selectedrow")
#mydbobject = DbModel.gql("WHERE key=:1", row).fetch(1)
#mydbobject = DbModel.gql("WHERE key=:1", int(row)).fetch(1)#invalid literal for int()   with base 10
#print mydbobject,row

que = db.Query(DbModel)
results = que.fetch(100)
mydbobject = None
for item in results:
if item.key().__str__() in row:
    mydbobject = item

EDIT1- un intento más que no se recupere el registro, existe la clave en el almacén de datos junto con el expediente     mydbobject = DbModel.gql ( "WHERE clave = CLAVE ( '% s')" % fila) .fetch (1)

¿Fue útil?

Solución

Estoy en lo correcto en mi suposición de que usted está básicamente sólo desea recuperar un objeto con una clave particular? Si es así, el rel="nofollow métodos get y get_by_id pueden ser de ayuda :

mydbobject = DbModel.get_by_id(int(self.request.get("selectedrow")))

Otros consejos

El error "no válido literal para int ()" indican que el pase parámetro de a int no era una cadena que representa un número entero. Intento imprimir el valor de "fila" para debuging, apuesto a que es una cadena vacía.

La forma correcta para recuperar un elemento de la clave es simplemente usando el método "get" o "get_by_id". En su caso:

row = self.request.get("selectedrow")
mydbobject = DbModel.get(row)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top