from google.cloud import ndb
class MyModel(ndb.Model):
name = ndb.StringProperty()
objs =MyModel.gql("where name IN ('raj','rahul')")
if objs:
for obj in objs:
logging.info(obj.name)
logging.info("list_of_objs = %s", objs)
return str(objs)
"Traceback (most recent call last):
File "/env/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/env/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/env/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/env/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/env/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/env/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/env/lib/python3.7/site-packages/flask/views.py", line 89, in view
return self.dispatch_request(*args, **kwargs)
File "/env/lib/python3.7/site-packages/flask/views.py", line 163, in dispatch_request
return meth(*args, **kwargs)
File "/srv/login.py", line 4470, in get
for obj in objs:
File "/env/lib/python3.7/site-packages/google/cloud/ndb/_datastore_query.py", line 321, in next
if not self.has_next():
File "/env/lib/python3.7/site-packages/google/cloud/ndb/_datastore_query.py", line 258, in has_next
return self.has_next_async().result()
File "/env/lib/python3.7/site-packages/google/cloud/ndb/tasklets.py", line 190, in result
self.check_success()
File "/env/lib/python3.7/site-packages/google/cloud/ndb/tasklets.py", line 137, in check_success
raise self._exception
File "/env/lib/python3.7/site-packages/google/cloud/ndb/tasklets.py", line 309, in _advance_tasklet
self.generator.throw(type(error), error, traceback)
File "/env/lib/python3.7/site-packages/google/cloud/ndb/_datastore_query.py", line 264, in has_next_async
yield self._next_batch() # First time
File "/env/lib/python3.7/site-packages/google/cloud/ndb/tasklets.py", line 309, in _advance_tasklet
self.generator.throw(type(error), error, traceback)
File "/env/lib/python3.7/site-packages/google/cloud/ndb/_datastore_query.py", line 292, in _next_batch
response = yield _datastore_run_query(query)
File "/env/lib/python3.7/site-packages/google/cloud/ndb/tasklets.py", line 312, in _advance_tasklet
yielded = self.generator.send(send_value)
File "/env/lib/python3.7/site-packages/google/cloud/ndb/_datastore_query.py", line 835, in _datastore_run_query
query_pb = _query_to_protobuf(query)
File "/env/lib/python3.7/site-packages/google/cloud/ndb/_datastore_query.py", line 760, in _query_to_protobuf
filter_pb = query.filters._to_filter() if query.filters else None
File "/env/lib/python3.7/site-packages/google/cloud/ndb/query.py", line 569, in _to_filter
"Parameter :{} is not bound.".format(self._param.key)
AttributeError: 'ParameterizedFunction' object has no attribute 'key'"
}
But When I tried the same using query, as shown in below example2, things work out just fine.
Code Example 2
# worked fine
objs =MyModel.gql("where name IN :1", ['raj', 'rahul'])
if objs:
for obj in objs:
logging.info(obj.name)
logging.info("list_of_objs = %s", objs)
return str(objs))
The only difference between both example is in the way values are binded. This issue was only with queries having "IN" operator.
I was trying to execute a simple below GQL query but found an AttributeError:
Code Example:
Stack Trace
But When I tried the same using query, as shown in below example2, things work out just fine.
Code Example 2
The only difference between both example is in the way values are binded. This issue was only with queries having "IN" operator.