python - flask sqlalchemy signals 無法觸發(fā)
問題描述
在我得藍圖當(dāng)中我定義了 一個接受者
# -*- coding: utf-8 -*-from flask_sqlalchemy import models_committed# flag = True# if flag:def on_models_committed(sender, changes): print u’我是訂閱者,我要觸發(fā)任務(wù)’ for obj, change in changes:if change == ’insert’ and hasattr(obj, ’__commit_insert__’): obj.__commit_insert__()elif change == ’update’ and hasattr(obj, ’__commit_update__’): obj.__commit_update__()elif change == ’delete’ and hasattr(obj, ’__commit_delete__’): obj.__commit_delete__()models_committed.connect(on_models_committed)
然后哦在create_app 當(dāng)中的__init__.py 導(dǎo)入了我藍圖中的這個方法
在models.py 中定義了__commit_update__()方法來執(zhí)行處理邏輯
但是現(xiàn)在信號無法觸發(fā),求問哪里出錯了?
問題解答
回答1:問題解決方式db.session.query(ClassModel).filter( ClassModel.id == ids).delete()修改成db.session.query(ClassModel).filter( ClassModel.id == ids).first().delete()classModel(db.Model): .....def delete(self):db.session.delete(self)db.session.commit()
加上以上修改能夠正確的捕捉到信號的觸發(fā)了, 但是不知道原理是啥? query對象的刪除,和model對象的刪除的級別問題么, 內(nèi)置信號是基于db 這一層級別的嗎?
相關(guān)文章:
1. html5 - 這個代碼顯示功能如何實現(xiàn)?2. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題3. java - 關(guān)于File的問題?4. java - instance method中 static后的<K>是什么意思?5. docker - 如何修改運行中容器的配置6. 錯誤:java.lang.NoSuchMethodError:org.objectweb.asm.ClassWriter。<init>(I)V7. python3.x - python連oanda的模擬交易api獲取json問題第五問8. javascript - QWebEngineView 如何爬 angular 的動態(tài)數(shù)據(jù)?9. docker-machine添加一個已有的docker主機問題10. 為什么我ping不通我的docker容器呢???
