如何为特定Postgres模式中视图被删除时编写SQLAlchemy事件监听器?

1 投票
1 回答
552 浏览
提问于 2025-04-18 18:39

在我的应用程序中,每当某个Postgres模式下的视图被删除时,我想调用一个特定的函数。我对SQLAlchemy的event.listener功能有一些了解,但我主要看到它用于监听表的插入、更新和删除。我查看了文档,在这里,但似乎没有关于删除视图或视图的一般内容(是的,我明白我想做的事情有点独特)。有没有办法让我监听从SQLAlchemy执行的DROP VIEW specific_schema_name.my_table查询,如果它匹配specific_schema_name,我想捕捉到这个事件?

我明白SQLAlchemy对删除语句或视图的内置支持不多,甚至没有。那么,应该如何创建这样一个监听器呢?

1 个回答

3

你最有可能做的就是监听执行的情况,然后查看字符串的值来获取你需要的信息:

from sqlalchemy import event
import re

@event.listens_for(my_engine, "after_cursor_execute")
def my_thing(conn, cursor, statement, parameters, context, executemany):
    if re.match(r'DROP VIEW my_table', statement):
        call_my_function()

撰写回答