Joining sqlalchemy models

I am looking to connect to the model creation cycle for sqlalchemy models. For example, when creating or saving (for example, in Ruby ORM ActiveRecord, I actually move the model from ActiveRecord to SqlAlchemy).

The events look as I need: http://docs.sqlalchemy.org/en/rel_0_7/core/event.html , but so far I have not found more detailed examples. I would love to hear someone come across this.

Are there similar tools in sqlalchemy to perform actions on a model / instance based on specific signals, for example. after_create?

+5
source share
2 answers

, .

import uuid    

from sqlalchemy.event import listen

from mypackage.models import Base


def generate_license(mapper, connect, target):
    target.generate_license()

class User(Base):
    __tablename__ = "users"
    id = Column(String(36))
    license = Column(String(256))

    def generate_license(self):
        if not self.license:
            self.license = str(uuid.uuid4())
        return self.license

listen(User, 'before_insert', generate_license)

:

from sqlalchemy.event import listens_for
class User(Base):

@listens_for(User, 'before_insert')
def generate_license(mapper, connect, self):
+15
from sqlalchemy.event import listen_for
class User(Base):
    @listen_for(User, 'before_insert')
    @staticmethod
    def generate_license(mapper, connect, self):

NameError: name 'User' is not defined
+8

All Articles