If you submit an issue, be sure to submit it on the pydal repository, not 
the web2py framework repository.

On Monday, July 11, 2016 at 9:02:02 AM UTC-4, Anthony wrote:
>
> As noted in the documentation 
> <http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#Legacy-databases-and-keyed-tables>,
>  
> the .update_record method is not available on rows of keyed tables, so you 
> will therefore also not be able to use the built-in .update_or_insert 
> method (which uses .update_record internally). Instead, you can write your 
> own function -- as you can see here 
> <https://github.com/web2py/pydal/blob/v16.06.28/pydal/objects.py#L792>, 
> it's a fairly simple function. Also, feel free to submit a Github issue 
> about this (link back to this discussion), as I don't think it would be 
> difficult to refactor .update_or_insert to accommodate keyed tables.
>
> Anthony
>
> On Monday, July 11, 2016 at 2:11:38 AM UTC-4, Ívar Ragnarsson wrote:
>>
>> Hi
>> I'm new to Web2py and having some trouble with update_or_insert.  Hope 
>> you guys can help me.
>> The first time I run the update_or_insert function it correctly inserts 
>> the values into the table. (I'm using sqlite but also tried Postgresql).
>> The next time I run it I get an Attribute:
>> Traceback (most recent call last):
>>   File "C:\...\gluon\restricted.py", line 227, in restricted
>>     exec ccode in environment
>>   File "C:/.../applications/pant/controllers/test.py", line 6, in 
>> <module>
>>   File "C:\...\gluon\globals.py", line 417, in <lambda>
>>     self._caller = lambda f: f()
>>   File "C:/.../applications/pant/controllers/test.py", line 4, in index
>>     db.stillingar.update_or_insert( (db.stillingar.notandi==1)&(db.
>> stillingar.stilling=='setting1'), notandi=1 , gildi="111", stilling=
>> "setting1")
>>   File "C:\...\gluon\packages\dal\pydal\objects.py", line 786, in 
>> update_or_insert
>>     record.update_record(**values)
>>   File "C:\...\gluon\packages\dal\pydal\objects.py", line 90, in 
>> __getattr__
>>     raise AttributeError
>> AttributeError
>>
>> My table definition is:
>> db.define_table('stillingar', 
>>                 Field('notandi', type="integer", required=True), 
>>                 Field('stilling', type="text", required=True),
>>                 Field('gildi', type="text"),
>>                 primarykey=['notandi', 'stilling'],
>>                 migrate=True)
>>
>> My controller is:
>> # -*- coding: utf-8 -*-
>>
>> def index():
>>      db.stillingar.update_or_insert( (db.stillingar.notandi==1)&(db.
>> stillingar.stilling=='setting1'), notandi=1 , gildi="111", stilling=
>> "setting1")
>>      return dict()
>>
>> My view is basic.
>>
>> Can you guys tell me what I'm doing wrong?
>>
>>
>>
>>

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