2015-07-23 13 views
5

Sto usando sqlalchemy per un progetto. Tuttavia, sono più abituato all'ORM di Django.SQLAlchemy Model Metodo di salvataggio simile a Django?

Mi piacerebbe sapere se, in sqlachemy ORM, c'è qualcosa di simile al metodo save() di un modello Django che posso sovrascrivere per implementare le azioni automaticamente su un 'commit'/'save'.

risposta

3

è possibile estendere il modello con alcuni semplici metodi CRUD per ottenere qualcosa di simile a 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 

È quindi possibile salvare o distruggere il modello in base alle esigenze:

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