我在一个项目中需要将一些自定义触发器附加到使用SQLAlchemy定义并使用Alembic控制的表。在
现在,我有一个简单的循环,它将after_create
事件附加到每个声明性表类:
trigger_on = [
Series,
Tags,
Genres,
Author,
Illustrators,
AlternateNames,
Translators,
Releases,
Language,
Covers,
]
def iife_capture(func, param):
def callee(table, connection, **kwargs):
return func(connection, param)
return callee
for classDefinition in trigger_on:
event.listen(
classDefinition.__table__,
'after_create',
iife_capture(create_trigger, classDefinition)
)
实际上,我定义了一个立即调用的函数来捕获传递的参数,它返回一个调用表classDefinition
上的create_trigger
的函数。这个部分实际上工作得很好,如果我手动执行create_all()
,一切都很好。在
但是,如果我通过alembic创建表,after_create
调用似乎并没有被实际调用。在
另一个问题here看起来实际上是在描述一个类似的问题。我尝试将事件附加到sqlalchemy.Table
,而不是单独的表,但是结果导致它们在只创建一个表之后全部执行,这失败了,因为create_trigger
函数专门将内容附加到它所调用的表上。在
在创建了每个表(或者所有表都可以工作)之后,如何调用函数?在
基本上,我希望能够通过使用alembic完成我的完整的DB设置,而不是我现在拥有的可怕的凌乱的设备。在
目前没有回答
相关问题 更多 >
编程相关推荐