python - SQLAlchemy 事件注册

标签 python sqlalchemy

我正在尝试弄清楚 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/

相关文章:

mysql - Python-Sqlalchemy 二进制列类型 HEX() 和 UNHEX()

python - 自动恢复最小化的 tkinter 窗口

python - Kivy - 通过 id 删除小部件

python - 500 内部服务器错误 Heroku

使用 SQLAlchemy + postgresql 更新 Python 数据库

python - 如何将 PostgreSQL 的 "INSERT...ON CONFLICT"(UPSERT) 功能与 flask_sqlalchemy 一起使用?

java - 尝试将 python 代码移植到 Java 但得到不同的结果

python - yield without value 在上下文管理器中做什么

Python IP解析

python - Flask-sqlalchemy;通过外键列表过滤查询