Right, well, it sounds like you know what you want then. Some kind of update mechanism that doesn't take null fields.
Nothing like that exists in Web2py, so that answers your question.
However, the way I see it, you can write one fairly easily.
Get your 'update' row, make it a dict (dict a). If there is a field with a 'null' in the value, delete that item from the dict.
Next, load your existing object into a different dict (dict b). Now you write your merge/update...
dicta.get('fieldname',b[fieldname])
What that does is get the item from A if it exists (ie if it's not null and you've not deleted it) and if it doesn't exist, get the item from B.
Does that help you out?