Python SQLAlchemy 0.6.5(和0.6.8)SessionExtension在';有人打电话给他
我不明白,但这段代码不会调用after\u flush/before\u flush/after\u flush\u postexcPython SQLAlchemy 0.6.5(和0.6.8)SessionExtension在';有人打电话给他,python,sqlalchemy,Python,Sqlalchemy,我不明白,但这段代码不会调用after\u flush/before\u flush/after\u flush\u postexc # -*- coding: utf-8 -*- from sqlalchemy.orm import scoped_session, sessionmaker from sqlalchemy.orm.interfaces import SessionExtension class AfterFlushExtension(SessionExtension):
# -*- coding: utf-8 -*-
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.orm.interfaces import SessionExtension
class AfterFlushExtension(SessionExtension):
def before_commit(self, session):
print "> before_commit"
def after_commit(self, session):
print "> after_commit"
def before_flush(self, session, flush_context, instances):
print '> before_flush'
def after_flush(self, session, flush_context):
print '> after_flush'
def after_flush_postexec(self, session, flush_context):
print '> after_flush_postexec'
session = scoped_session(sessionmaker(extension=AfterFlushExtension()))
session.flush()
session.commit()
结果是:
$ python ~/Dropbox/playground/python/sqlalchemy_hook_test/main.py
> before_commit
> after_commit
迈克尔·拜耳在SQLAlchemy的邮件列表中回答: 刷新事件仅在以下情况下触发: 事实上,有些东西是值得去做的 脸红了。这对我来说是低效的 要为每个事件发出的事件 flush()因为flush实际上被称为 很多次,在每次查询中, 假设已启用自动刷新。为此 使用以下会话推理flush() 没有任何类型的变化事件 快速检查一些标志并返回 在你真正成为 打电话 在\u刷新\u之前\u挂起的\u更改()如果 这很有帮助 我会检查文档字符串,看看是否 需要任何澄清
谢谢,MichaelMichael Bayer在SQLAlchemy的邮件列表上回答: 刷新事件仅在以下情况下触发: 事实上,有些东西是值得去做的 脸红了。这对我来说是低效的 要为每个事件发出的事件 flush()因为flush实际上被称为 很多次,在每次查询中, 假设已启用自动刷新。为此 使用以下会话推理flush() 没有任何类型的变化事件 快速检查一些标志并返回 在你真正成为 打电话 在\u刷新\u之前\u挂起的\u更改()如果 这很有帮助 我会检查文档字符串,看看是否 需要任何澄清
谢谢你,Michael,你有没有试过在有东西等着冲洗的地方用这个?如果同花顺中无事可做,同花顺会做什么?让我们知道!你有没有试过在有东西等着冲洗的地方?如果同花顺中无事可做,同花顺会做什么?让我们知道!