SQLAlchemy Model Django喜欢Save Method吗?

时间:2015-07-23 10:39:53

标签: django django-models sqlalchemy

我正在使用sqlalchemy进行项目。但是,我更习惯于Django的ORM。

我想知道,在sqlachemy ORM中,是否存在类似于Django模型的save()方法,我可以覆盖以在“提交”/“保存”时自动实现操作。

3 个答案:

答案 0 :(得分:16)

您可以使用一些简单的crud方法扩展模型,以实现与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

然后,您可以根据需要保存或销毁模型:

user = User('example@example.com')
user.save()

答案 1 :(得分:3)

可能您正在寻找ORM events

查看instance eventssession events

答案 2 :(得分:3)

好消息给你!

我为此创建了包。它为SQLAlchemy实现了Active Record模式。

请参阅https://github.com/absent1706/sqlalchemy-mixins#active-record

它还有许多非常有用的功能,例如Django lookups that span relationship,声明性的渴望加载和SQAlchemy的可读print