Update Operations

The UpdateItem DynamoDB operations allows you to create or modify attributes of an item using an update expression. See the official documentation for more details.

Suppose that you have defined a Thread Model for the examples below.

from pynamodb.models import Model
from pynamodb.attributes import (
    ListAttribute, UnicodeAttribute, UnicodeSetAttribute, NumberAttribute

class Thread(Model):
    class Meta:
        table_name = 'Thread'

    forum_name = UnicodeAttribute(hash_key=True)
    subjects = UnicodeSetAttribute(default=dict)
    views = NumberAttribute(default=0)
    notes = ListAttribute(default=list)

Update Expressions

PynamoDB supports creating update expressions from attributes using a mix of built-in operators and method calls. Any value provided will be serialized using the serializer defined for that attribute.

DynamoDB Action / Operator PynamoDB Syntax Example
SET set( value ) Thread.views.set(10)
REMOVE remove() Thread.notes[0].remove()
ADD add( value ) Thread.subjects.add({‘A New Subject’, ‘Another New Subject’})
DELETE delete( value ) Thread.subjects.delete({‘An Old Subject’})
attr_or_value_1 + attr_or_value_2 attr_or_value_1 + attr_or_value_2 Thread.views + 5
attr_or_value_1 - attr_or_value_2 attr_or_value_1 - attr_or_value_2 5 - Thread.views
list_append( attr , value ) append( value ) Thread.notes.append([‘my last note’])
list_append( value , attr ) prepend( value ) Thread.notes.prepend([‘my first note’])
if_not_exists( attr, value ) attr | value Thread.forum_name | ‘Default Forum Name’