我正在尝试弄清楚 SQLAlchemy 是如何处理事件注册的。我有一种情况,我想将所有事件监听器保存在一个文件中,而不是模型中(我想这样做是为了避免我的模型导入具有业务逻辑的 Controller )。但是如果我尝试在单独的文件中执行类似以下的操作,代码将不会触发:
from sqlalchemy.event import listens_for
from models import User
@listens_for(User, 'before_update')
def before_update_listener(mapper, connection, instance):
print "do something"
这是有道理的,这个模块从未被导入,但是我如何告诉 SQLAlchemy 事件监听器存在于某些 listeners.py 文件中?
最佳答案
必须导入该文件,您可以执行以下操作:
# listeners.py
from sqlalchemy.event import listens_for
from models import User
@listens_for(User, 'before_update')
def before_update_listener(mapper, connection, instance):
print "do something"
.
# __init__.py
from . import events
del events
关于python - SQLAlchemy 事件注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37170059/