如何在删除特定Postgres架构中的视图时编写SQLAlchemy事件侦听器?

时间:2014-08-27 01:42:35

标签: python postgresql sqlalchemy

在我的应用程序中,每当某个Postgres架构中的视图被删除时,我想调用一个特定的函数。我熟悉SQLAlchemy的event.listener功能,但我主要看到它用于监听表插入,更新和删除。我查看了文档here,但似乎没有任何与删除视图或一般视图相关的内容(是的,我知道我尝试做的事情有点独特)。有没有办法让我听一下从SQLAlchemy执行的DROP VIEW specific_schema_name.my_table查询,如果匹配specific_schema_name,我想抓住它?

据我所知,SQLAlchemy对drop语句或视图没有太多内置支持(如果有的话)。如何创造这样的倾听者?

1 个答案:

答案 0 :(得分:1)

你最有可能只是听取执行,并查看你需要的字符串值:

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()