+1 for Dave .

with isempty() in a model you're executing a query for each and every 
request for absolutely NO REASON.

This are activities that needs to be carried on on a post-deployment 
fire-only-when-needed scenario, and outside the web environment.

On Tuesday, August 30, 2016 at 8:24:53 PM UTC+2, Dave S wrote:
>
>
>
> On Tuesday, August 30, 2016 at 6:58:43 AM UTC-7, Richard wrote:
>>
>> Seems alright do you have issue with this? I would put a blank line 
>> between model definition and the "if isempty()".
>>
>> I production, once the system get initialize you should remove those 
>> populating fixture to save execution time as the get execute at each 
>> request.
>>
>> What could wizely do is put all the populating fixtures in a models file 
>> or controller file function that you delete or comment out once you 
>> populate you empty new database instance. Putting it in a function 
>> controller file wouldn't requires you to delete them as you will never call 
>> this controller file later on and if can by mistake it will not do 
>> anything. But depend of the size  fo the populated data set the call of a 
>> function could lead to a time out from the web server which prevent 
>> completion of populating data. So you have to evaluate if it has chance or 
>> not to complete properly. You can split the populating process into a 
>> couple of function call so yo don't reach time out.
>>
>>
> Or give the function a dummy argument 
> def func(dummy=True):
>    ...
>
>
>  and then invoke it with -S from the command line.  This parallels 
> Niphlod's advice for setting up the initial copy of a recurring task.  (The 
> dummy arg keeps the function from being exposed as a URL.)
>
> Good luck
>>
>> Richard
>>
>>
> /dps
>
>  
>
>>
>>
>> On Tue, Aug 30, 2016 at 9:34 AM, Ben Lawrence <benla...@gmail.com> wrote:
>>
>>> At the moment to pre-populate a database, I place this in the db.py 
>>> model file:
>>>
>>> db.define_table('color',
>>>     Field('name','string'),
>>>     Field('code','string'),
>>>     format='%(name)s')
>>> if db(db.color).isempty():
>>>     # create instance of table
>>>     for k,v in 
>>> dict(lime="#00FF00",red="#FF0000",black="#000000",orange="#FFA500",\
>>>         blue="#0000FF", yellow="#FFFF00", fuchsia="#FF00FF", 
>>> aqua="#00FFFF",\
>>>         maroon="#800000", green="#008000", navy="#000080", 
>>> olive="#808000",\
>>>         purple="#800080", teal="#008080", gray="#808080", 
>>> silver="#C0C0C0").items():
>>>         db.color.insert(name=k,code=v)
>>>
>>>
>>>
>>> I wonder if this is the best way to pre-populate a database?
>>>
>>> thanks,
>>> Ben
>>>
>>> -- 
>>> Resources:
>>> - http://web2py.com
>>> - http://web2py.com/book (Documentation)
>>> - http://github.com/web2py/web2py (Source code)
>>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>>> --- 
>>> 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+un...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
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/d/optout.

Reply via email to