JQL no funciona para obtener parámetros para las llaves
-
13-09-2019 - |
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)
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)