your line numbers are off from mine so i'm having trouble making sense of 
this. :(

can you send your model definition so i can see what you are working with?  
i think then i can line it up with the dal version i have here (which was 
trunk from HG as of saturday AM PST)

cfh

On Tuesday, February 26, 2013 3:18:13 PM UTC-8, Scott Hunter wrote:
>
> Sorry about that.  I've fixed it, and now I get the following:
>
> In FILE: /base/data/home/apps/s~sbhweb2py/1.365574604253984974/
> applications/ppt_demo/models/db_wizard.py
>
>
> Traceback (most recent call last):
>   File 
> "/base/data/home/apps/s~sbhweb2py/1.365574604253984974/gluon/restricted.py"
> , line 212, in restricted
>     exec ccode in environment
>   File 
> "/base/data/home/apps/s~sbhweb2py/1.365574604253984974/applications/ppt_demo/models/db_wizard.py"
> , line 198, in <module>
>     migrate=settings.migrate)
>   File 
> "/base/data/home/apps/s~sbhweb2py/1.365574604253984974/gluon/dal.py",line 
> 7189, in define_table
>     table = self.lazy_define_table(tablename,*fields,**args)
>   File 
> "/base/data/home/apps/s~sbhweb2py/1.365574604253984974/gluon/dal.py",line 
> 7225, in lazy_define_table
>     polymodel=polymodel)
>   File 
> "/base/data/home/apps/s~sbhweb2py/1.365574604253984974/gluon/dal.py",line 
> 4368, in create_table
>     ftype = self.types[field_type](**attr)
> TypeError: <lambda>() takes no arguments (1 given)
>
>
> This only happens if one of the fields in question is a string; I get no 
> error when the unindexed fields are all integer, boolean or double.
>
> - Scott
>
>
> On Tuesday, February 26, 2013 1:04:12 AM UTC-5, howesc wrote:
>>
>> it looks like you have a typo.... "custom_qualifer" vs "custom_qualifier"
>>
>> On Monday, February 25, 2013 6:44:14 PM UTC-8, Scott Hunter wrote:
>>>
>>> I applied the patch, and added custom_qualifiers like so:
>>>
>>>     Field('f_name', type='string',custom_qualifer={'indexed':False},
>>>           label=T('Name')),
>>>
>>>
>>>
>>> and this is the error I got:
>>>
>>> In FILE: /base/data/home/apps/s~sbhweb2py/1.365567821359373728/
>>> applications/ppt_demo/models/db_wizard.py
>>>
>>>
>>> Traceback (most recent call last):
>>>   File 
>>> "/base/data/home/apps/s~sbhweb2py/1.365567821359373728/gluon/restricted.py"
>>> , line 212, in restricted
>>>     exec ccode in environment
>>>   File 
>>> "/base/data/home/apps/s~sbhweb2py/1.365567821359373728/applications/ppt_demo/models/db_wizard.py"
>>> , line 165, in <module>
>>>     label=T('Name')),
>>> TypeError: __init__() got an unexpected keyword argument 
>>> 'custom_qualifer'
>>>
>>>
>>>
>>>
>>> On Saturday, February 23, 2013 12:30:48 PM UTC-5, howesc wrote:
>>>>
>>>> Scott,
>>>>
>>>> this is *completely* untested, but here's a proposal:
>>>>  - use the (undocumented) field.custom_qualifier property in GAE field 
>>>> definitions
>>>>  - if you want a field to be unindexed set 
>>>> custom_qualifier={'indexed':False}
>>>>  - for "properties that don't get listed explicitly"....override those 
>>>> default properties with what you want (there are a few techniques for not 
>>>> explicitly listing fields, depending on which technique you are using the 
>>>> answer here is different.
>>>>
>>>> this patch against HG trunk this AM might work (i say might cause i 
>>>> have not tested it).  are you willing to experiment with it and let us 
>>>> know?
>>>>
>>>> thanks,
>>>>
>>>> christian
>>>>
>>>> On Friday, February 22, 2013 3:53:33 PM UTC-8, Scott Hunter wrote:
>>>>>
>>>>> If I had to guess, I'd say a patch is needed in the loop over the 
>>>>> fields in create_table, that would add a new entry to the dict for the 
>>>>> field definition based on a new attribute (which would be ignored for 
>>>>> anything other than Google's Datastore) which gets added to sql_fields; 
>>>>> then migrate_table, which seems to build the table building/altering 
>>>>> commands would need to be made to recognize the new entry & add the 
>>>>> disable 
>>>>> index command.  There's not a lot of comments in the code, and I'd be 
>>>>> afraid to break something, but might give it a try.
>>>>>
>>>>> - Scott
>>>>>
>>>>> P.S. Not sure of the best way to handle this (what's describe above 
>>>>> wouldn't handle it), but it would be nice to be able to turn off the 
>>>>> indexes for the fields that don't get listed explicitly in  models.db 
>>>>> (things like created by & when, modified by & when).
>>>>>
>>>>> On Friday, February 22, 2013 6:14:28 PM UTC-5, howesc wrote:
>>>>>>
>>>>>> thanks for the link.  i'll try and take a look this weekend and see 
>>>>>> if there is a place for that in the DAL  (feel free to open gluon/dal.py 
>>>>>> yourself too).
>>>>>>
>>>>>> yup, i'm paying more for writes right now then i am for instance 
>>>>>> hours per day on my largest paid application. :)
>>>>>>
>>>>>> cfh
>>>>>>
>>>>>> On Thursday, February 21, 2013 5:59:06 PM UTC-8, Scott Hunter wrote:
>>>>>>>
>>>>>>> According to 
>>>>>>> https://developers.google.com/appengine/docs/python/datastore/indexes#Unindexed_Properties,
>>>>>>>  
>>>>>>> "You declare a property unindexed by setting indexed=False in the 
>>>>>>> property 
>>>>>>> constructor".
>>>>>>>
>>>>>>> One incurs the cost of a write (or 2?) for every property of a 
>>>>>>> record that gets written; so, for a table with about 25 fields (once 
>>>>>>> you 
>>>>>>> include all of the ones web2py adds), inserting 300 records incurs the 
>>>>>>> cost 
>>>>>>> of 14K+ writes; as the free account has a limit of 50K writes per day, 
>>>>>>> that 
>>>>>>> is rather limiting.  It is easy to turn such indicies back on, but you 
>>>>>>> have 
>>>>>>> to re-write every record in order to repopulate them.
>>>>>>>
>>>>>>> - Scott
>>>>>>>
>>>>>>> On Thursday, February 21, 2013 4:51:59 PM UTC-5, howesc wrote:
>>>>>>>>
>>>>>>>> i'm being lazy here....do you have the instructions (or link to 
>>>>>>>> instructions) from GAE for disabling indexes?  i don't have it handy 
>>>>>>>> right 
>>>>>>>> now....
>>>>>>>>
>>>>>>>> we can check if the DAL has a secret way to handle it, and/or 
>>>>>>>> create a patch to allow it.
>>>>>>>>
>>>>>>>> may i ask what advantage you are hoping to achieve by skipping 
>>>>>>>> those indexes?  i've left them on for fear of making a bad choice that 
>>>>>>>> i 
>>>>>>>> can't revert.
>>>>>>>>
>>>>>>>> christian
>>>>>>>>
>>>>>>>> On Thursday, February 21, 2013 5:56:07 AM UTC-8, Scott Hunter wrote:
>>>>>>>>>
>>>>>>>>> As I understand it, the GAE datastore will automatically create an 
>>>>>>>>> index for every field of every table (to facilitate queries using 
>>>>>>>>> single 
>>>>>>>>> fields); those requiring multiple fields also get generated, but will 
>>>>>>>>> get 
>>>>>>>>> added to index.yaml by the SDK when tested locally.  Since these are 
>>>>>>>>> created outside of the DAL, I wouldn't expect to be able to remove 
>>>>>>>>> them 
>>>>>>>>> using it.  I also understand that there is a way, with the GAE SDK, 
>>>>>>>>> to 
>>>>>>>>> disable the index for any given field (by a parameter in the field 
>>>>>>>>> definition); is there any way to accomplish this through the DAL, and 
>>>>>>>>> if 
>>>>>>>>> so, what is it?
>>>>>>>>
>>>>>>>>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to