Thanks Massimo! Much easier way.

Ykä

On Wednesday, July 27, 2016 at 10:24:13 AM UTC+3, Massimo Di Pierro wrote:
>
> No need for a loop just do fro the shell:
>
> db(db.persons.new_field==None).update(new_field=0)
>
> Massimo
>
> On Tuesday, 26 July 2016 10:54:19 UTC-5, Ykä Marjanen wrote:
>>
>> How should I properly initialize old rows after inserting a new field if 
>> default only updates the new rows? In my case the old rows should also work 
>> with the new field and value.
>>
>> Should I do a for loop to manually update all 'old' rows to default value 
>> after defining the new field?
>>
>> Ykä
>>
>> On Tuesday, July 26, 2016 at 5:05:54 PM UTC+3, Niphlod wrote:
>>>
>>> yep. "default" is something that gets evaluated in python at insert 
>>> time. Given it takes also a callable, it can't be translated to a proper 
>>> default constraint on the backend. When you alter the table, you should do 
>>> so ALSO considering if it's full or empty, and/or that the new column would 
>>> be meaningful only from a certain "release" onwards.
>>>
>>> tl;dr: the naming is unfortunate, but "default" doesn't translate to 
>>> anything in the backend: all the machinery is done on the python layer.
>>>
>>> On Tuesday, July 26, 2016 at 10:13:19 AM UTC+2, Ykä Marjanen wrote:
>>>>
>>>> Hi,
>>>>
>>>> I have been using Web2py for couple years now, but have not been able 
>>>> to find a decent solution to this issue.
>>>>
>>>> When creating a new web app I am constantly updating new fields to a 
>>>> database table after I already have data there. When I add a new field, I 
>>>> want it to have a default value for it, but for some reason web2py always 
>>>> has the value at None for the new field even though I have defined it to 
>>>> be 
>>>> 0.
>>>>
>>>> For example:
>>>>
>>>> db.define_table(
>>>>     'persons',
>>>>    Field('old_field','integer',default=0),
>>>>    Field('new_field','integer',default=0)
>>>> )
>>>>
>>>> The new_field is now updated to the table correctly, but instead of 0 
>>>> it is None for the old records.
>>>>
>>>> This is annoying as I am assuming old tables to have the new_field also 
>>>> set as 0 and now I must write code to assume None and change it manually 
>>>> to 
>>>> 0.
>>>>
>>>> Am I missing something?
>>>>
>>>> Ykä
>>>>
>>>>

-- 
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