Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建后的Alembic/SQLAlchemy未触发_Python_Sqlalchemy_Alembic - Fatal编程技术网

Python 创建后的Alembic/SQLAlchemy未触发

Python 创建后的Alembic/SQLAlchemy未触发,python,sqlalchemy,alembic,Python,Sqlalchemy,Alembic,我正在进行一个项目,需要将一些自定义触发器附加到使用SQLAlchemy定义并使用Alembic控制的表 现在,我有一个简单的循环,它将一个after\u create事件附加到每个声明性表类: trigger_on = [ Series, Tags, Genres, Author, Illustrators, AlternateNames, Translators, Releases, Language, Cove

我正在进行一个项目,需要将一些自定义触发器附加到使用SQLAlchemy定义并使用Alembic控制的表

现在,我有一个简单的循环,它将一个
after\u 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\u trigger
的函数。这部分实际上工作正常,如果我手动执行
create\u all()
,一切都正常

但是,如果我通过alembic创建表,那么在创建之后的
调用似乎实际上没有被调用

另一个SE问题看起来实际上描述了一个类似的问题。我尝试将事件附加到
sqlalchemy.Table
,而不是单独的表,但它最终导致在只创建一个表之后执行所有事件,这失败了,因为
create\u trigger
函数专门将事件附加到它所调用的表

在创建每个表(或者所有表都可以工作)之后,如何调用函数


基本上,我想通过使用alembic来完成我的完整DB设置,而不是我现在拥有的糟糕的设备。

@Flake你解决了这个问题吗?@JasonRussell-没有!您好@Flake,我不确定您使用触发器的目的是什么,但我正在计划使用它们来填充各种模型的历史记录表。我找到了一个很好的解决方案,我只是觉得你可能会对它感兴趣@JasonRussell-很有趣。我来看看。顺便说一句,谁是“@Flake”?@Flake是Fake的误读名称,谁的名字在任何情况下都是假的。