【问题标题】:How to add event callbacks to sqlalchemy models?如何向 sqlalchemy 模型添加事件回调?
【发布时间】:2011-04-08 04:16:20
【问题描述】:

有一个页面演示了使用 Elixir 时如何做到这一点:

http://beachcoder.wordpress.com/2007/05/02/adding-event-callbacks-to-sqlalchemyelixir-classes/

但我没有使用 Elixir,我只是直接使用sqlalchemy,并将我的模型定义为:

Base = declarative_base()

class User(Base):
    __tablename__ = "users"
    ...

    def send_email(self):
        # send email to the user

而我想做的是:

class User(Base):
    __tablename__ = "users"
    ...
    before_insert('init_user', 'send_email')
    before_delete('something_before_delete')

    def init_user(self):
        # init some data of the user
    def send_email(self):
        # send email to the user
    def something_before_delete(self):
        # something before delete

注意before_insertbefore_delete 方法。我该怎么办?

【问题讨论】:

    标签: events callback sqlalchemy


    【解决方案1】:

    您的问题的答案是使用here 所述的扩展程序(MapperExtension、SessionExtension...)。

    但是你几乎肯定不想做任何事情,比如在这样的钩子中发送电子邮件。正确的方法是记录操作并在事务完成后对日志条目进行后处理。

    [编辑] sqlalchemy 文档已更改;处理这个问题的新方法是使用ORM Events

    【讨论】:

    • 感谢您关于“不要在此处发送电子邮件”的建议,这非常重要。而且,现在,我在您给我的页面上进行了一些回调,但是还有另一个问题。你能帮我吗:stackoverflow.com/questions/3646486
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多