Python flask sqlalchemy:将db.event.listen()放在何处

Python flask sqlalchemy:将db.event.listen()放在何处,python,flask-sqlalchemy,Python,Flask Sqlalchemy,我想在每次插入后更新postgres tsvector列。所以我声明了这个模型结构: models.py db = SQLAlchemy() from sqlalchemy.types import UserDefinedType class TsVector(UserDefinedType): name = "TSVECTOR" def get_col_spec(self): return self.name class Sugges

我想在每次插入后更新postgres tsvector列。所以我声明了这个模型结构:

models.py

db = SQLAlchemy()


from sqlalchemy.types import UserDefinedType
class TsVector(UserDefinedType):
    name = "TSVECTOR"
    def get_col_spec(self):
        return self.name


class Suggestion(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    
    combined_en = db.Column(db.String)
    vector_en = db.Column(TsVector)

    __table_args__ = (db.Index('vector_en_index', 'vector_en', postgresql_using='gin'),)
    

trigger_snippet_en = db.DDL("""
CREATE TRIGGER faq_en_vector_update BEFORE INSERT OR UPDATE
ON suggestion
FOR EACH ROW EXECUTE PROCEDURE
tsvector_update_trigger(vector_en, 'pg_catalog.english', 'combined_en')
""")


db.event.listen(Suggestion.__table__, 'after_create', trigger_snippet_en.execute_if(dialect='postgresql'))
如果应用程序在flask视图中插入数据,则不会更新tsvector列


设置
db.event.listen()
的正确位置在哪里?

只有在通过ORM创建表时才会调用\u create
,不是吗?因此,在调用
create\u all
时应该调用它-添加数据库后是否重新创建了数据库?嗯,不,它是一个现有的数据库,现在获得了这个新表。我无法重新创建数据库。你有什么想法吗?