Flask 插入后SQL炼金术检测到更改,但更新后SQL炼金术不起作用

Flask 插入后SQL炼金术检测到更改,但更新后SQL炼金术不起作用,flask,sqlalchemy,event-listener,Flask,Sqlalchemy,Event Listener,我有一个连接到MSSQL数据库的flask应用程序。Powerapps连接到同一个数据库,因此当从那里进行更改时,我需要一种方法来触发flask应用程序中的某些内容。我正在尝试使用SQLAlchemy事件侦听器,但遇到了一些问题。after_插入工作正常,但是after_更新似乎没有检测到任何更改。我知道数据库正在更新,所以这一定是我设置侦听器的方式,但我已经阅读了所有文档和示例,无法找出哪里出了问题。我在下面提供了事件侦听器和我的模型。如果有人知道我做错了什么,或者有一个替代的解决方案会对我有

我有一个连接到MSSQL数据库的flask应用程序。Powerapps连接到同一个数据库,因此当从那里进行更改时,我需要一种方法来触发flask应用程序中的某些内容。我正在尝试使用SQLAlchemy事件侦听器,但遇到了一些问题。after_插入工作正常,但是after_更新似乎没有检测到任何更改。我知道数据库正在更新,所以这一定是我设置侦听器的方式,但我已经阅读了所有文档和示例,无法找出哪里出了问题。我在下面提供了事件侦听器和我的模型。如果有人知道我做错了什么,或者有一个替代的解决方案会对我有很大帮助

class Batches(db.Model):
    batch = db.Column(db.String(120), unique=False, nullable=False)
    lineitem = db.Column(db.String(120), unique=False, nullable=True)
    contract = db.Column(db.String(120), unique=False, nullable=True)
    customer = db.Column(db.String(120), unique=False, nullable=True)
    status = db.Column(db.String(120), unique=False, nullable=True)
    acd = db.Column(db.String(120), unique=False, nullable=True)
    ecd = db.Column(db.String(120), unique=False, nullable=True)
    pkey = db.Column(db.String(120), primary_key=True)
    late = db.Column(db.String(120), unique=False, nullable=True)
    invoice = db.Column(db.String(120), unique=False, nullable=True)

    def __init__(self, batch, lineitem, contract, customer, status, acd ,ecd, pkey, late, invoice):

        self.batch = batch
        self.lineitem =  lineitem
        self.contract = contract
        self.customer = customer
        self.status = status
        self.acd = acd
        self.ecd = ecd
        self.pkey = pkey
        self.late = late
        self.invoice = invoice

        
    def __repr__(self):
        return (self.customer)



@event.listens_for(Batches, "before_update")
def preupdate_batch(mapper, connection, target):
    print("Updated..")

@event.listens_for(Batches, "after_update")
def postupdate_batch(mapper, connection, target):
    print("Updated..")

@event.listens_for(Batches, "after_insert")
def insert_batch(mapper, connection, target):
    print("Updated..")
同样,after_insert可以工作,但在更新之前或之后都不会发生任何事情。谢谢
(如果需要,我可以提供我的sqlalchemy更新语句,但我知道它正在正确更新)

我用我的db做了一个小测试,我可以完美地捕获插入后和更新后的数据。您确定要更新数据库吗?我的意思是,如果你只是插入新条目,那么你永远不会在更新后触发,因为只有当你更新当前条目的一些数据时才会触发。在我的例子中,我使用sqlalchemy,我不知道这是否有什么区别,因为你没有发布任何信息,我只能争辩。也许,将app.config['SQLALCHEMY\u TRACK\u MODIFICATIONS']=True设置为True,看看是否有什么不同。