Reputation: 15233
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
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