naren
naren

Reputation: 15233

Differentiate insert and update while set event in sqlalchemy

How to differentiate insert or update?

from sqlalchemy import event

@event.listens_for(SomeClass.some_attribute, 'set')
def receive_set(target, value, oldvalue, initiator):
    # Some logic..
    # Here i need to verify target is created or being updated.
    # Based on update/insert I have to set different value

Upvotes: 1

Views: 200

Answers (1)

davidism
davidism

Reputation: 127200

See the documentation on object states.

The persistent state is what you are concerned about. If it is false, an insert should take place, otherwise an update.

from sqlalchemy import event, inspect

@event.listens_for(SomeClass.some_attribute, 'set')
def receive_set(target, value, oldvalue, initiator):
    if inspect(target).persistent:
        # update here
    else:
        # create here

Upvotes: 1

Related Questions