2015-07-23 20 views
5

Używam sqlalchemy dla projektu. Jednak bardziej przywykłem do ORM Django.SQLAlchemy Model Django jak metoda Save?

Chciałbym wiedzieć, czy w ORM sqlachemy istnieje coś podobnego do metody save() modeli Django, którą mogę przesłonić, aby wykonać akcje automatycznie po "zatwierdzeniu"/"zapisaniu".

Odpowiedz

3

Można rozszerzyć swoje modele z kilku prostych metod CRUD, aby osiągnąć coś podobnego do Django ORM/ActiveRecord:

# SQLAlchemy db_session setup omitted 
... 

Model = declarative_base(name='Model') 
Model.query = db_session.query_property() 

class CRUD(): 

    def save(self): 
     if self.id == None: 
      db_session.add(self) 
     return db_session.commit() 

     def destroy(self): 
      db_session.delete(self) 
      return db_session.commit() 

class User(Model, CRUD): 
    __tablename__ = 'users' 
    id = db.Column(db.integer, primary_key=True) 
    email = db.Column(db.String(120), unique=True) 

    def __init__(self, email): 
     self.email = email 

Następnie można uratować lub zniszczyć modelu w zależności od potrzeb:

user = User('[email protected]') 
user.save()