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