Hi Anthony,
You are rigth... but I left only the Field valor and still returns empty. :)
That is the table...
Field('nome',
'string',
required = True,
),
Field('valor',
'text',
label="Valor: caso seja string ou numérico
(opcional)",
),
Field('valor_blob',
'blob',),
Field('upl_valor',
'upload',
uploadfield='valor_blob',
label="Valor binario (opcional)",
),
Field('descricao',
'text',
),
On Monday, June 11, 2012 10:54:00 PM UTC-3, Anthony wrote:
>
> Is tabela.valor_blob a Blob field? The GAE documentation says projections
> can only include indexed properties, so no Text or Blob properties -- see
> https://developers.google.com/appengine/docs/python/datastore/queries#Query_Projection.
>
> I would think that would result in an error, though.
>
> Anthony
>
> On Monday, June 11, 2012 9:35:28 PM UTC-4, Alex Benfica wrote:
>>
>> Hi Massimo and howesc!
>>
>> Testing again... I found a problem:
>>
>> Do not return errors ( but returns no rows... ).
>> rows = self.db(self.tabela.nome ==
>> nome).select(self.tabela.valor, self.tabela.valor_blob)
>>
>> Returns the desired rows...
>> rows = self.db(self.tabela.nome == nome).select()
>>
>>
>>
>>
>>
>>
>> On Monday, June 11, 2012 10:10:18 PM UTC-3, Alex Benfica wrote:
>>>
>>> Hello people!
>>>
>>> First of all... thank you Massimo and howesc!
>>>
>>> About this question that I did and Massimo and howesc answerd on Stack
>>> Overflow.
>>> I tried to put some code there... but I could't...
>>>
>>>
>>> http://stackoverflow.com/questions/10940995/does-google-app-engine-projection-queries-are-supported-by-web2py
>>>
>>> I did the web2py update to trunk and some parts of my code stopped
>>> working.
>>> Most of problems I got where like this below, that I still don't know
>>> how to solve and keep it efficient, as I need to find the values by "name",
>>> not by id.
>>>
>>> I order to make it work, I just removed the fields I specified.
>>>
>>> Was this way (causing errors)
>>> self.db(self.tabela.nome == nome).select(self.tabela.valor,
>>> self.tabela.valor_blob, self.tabela.nome)
>>>
>>> I did that... now it selects all fields again... but works!
>>> self.db(self.tabela.nome == nome).select()
>>>
>>> I'm problably missing something! How can I use projection queries with
>>> web2py? The ID field that web2py creates are the same ID used by datastore
>>> on GAE?
>>> I have a product that I need find by name... can I query it using
>>> projection queries? Is that?
>>>
>>>
>>>
>>>
>>> rows = self.db(self.tabela.nome == nome).select(self.tabela.valor,
>>> self.tabela.valor_blob, self.tabela.nome)
>>> File "D:\Dropbox\Devel\www\web2py\gluon\dal.py", line 8161, in select
>>> return adapter.select(self.query,fields,attributes)
>>> File "D:\Dropbox\Devel\www\web2py\gluon\dal.py", line 4149, in select
>>> for t in fields] for item in items]
>>> File "C:\Program Files
>>> (x86)\Google\google_appengine\google\appengine\ext\db\__init__.py", line
>>> 2313, in next
>>> return self.__model_class.from_entity(self.__iterator.next())
>>> File "C:\Program Files
>>> (x86)\Google\google_appengine\google\appengine\datastore\datastore_query.py",
>>>
>>> line 2809, in next
>>> next_batch = self.__batcher.next()
>>> File "C:\Program Files
>>> (x86)\Google\google_appengine\google\appengine\datastore\datastore_query.py",
>>>
>>> line 2671, in next
>>> return self.next_batch(self.AT_LEAST_ONE)
>>> File "C:\Program Files
>>> (x86)\Google\google_appengine\google\appengine\datastore\datastore_query.py",
>>>
>>> line 2708, in next_batch
>>> batch = self.__next_batch.get_result()
>>> File "C:\Program Files
>>> (x86)\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py",
>>> line 604, in get_result
>>> return self.__get_result_hook(self)
>>> File "C:\Program Files
>>> (x86)\Google\google_appengine\google\appengine\datastore\datastore_query.py",
>>>
>>> line 2450, in __query_result_hook
>>> self._batch_shared.conn.check_rpc_success(rpc)
>>> File "C:\Program Files
>>> (x86)\Google\google_appengine\google\appengine\datastore\datastore_rpc.py",
>>> line 1214, in check_rpc_success
>>> raise _ToDatastoreError(err)
>>> BadRequestError: cannot use projection on a property with an equality
>>> filter
>>>
>>