gpt4 book ai didi

python - 禁用 sqlalchemy 事件监听器的方法

转载 作者:行者123 更新时间:2023-12-03 14:18:44 24 4
gpt4 key购买 nike

我使用 sqlalchemy 1.0。
我的项目有几个模型,其中一些有事件监听器,比如event.listen(Model, 'after_update', Model._after_update) .

在单元测试的情况下,我需要禁用模型/ session /等上的所有事件监听器。

特定测试完成后,我需要启用所有监听器。

有没有办法实现这一目标?

最佳答案

您可以从 event.registry._key_to_collection 获取模型的所有事件监听器.这是一个带键的字典 (id(target), identifier, id(function)) .然后用 event.remove 删除它们.

import ctypes
from sqlalchemy import event

def clear_event_listeners(model):
keys = [k for k in event.registry._key_to_collection if k[0] == id(model)]
for key in keys:
target = model
identifier = key[1]
fn = ctypes.cast(key[2], ctypes.py_object).value # get function by id
event.remove(target, identifier, fn)

关于python - 禁用 sqlalchemy 事件监听器的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44947831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com