python - flask sqlalchemy signals 無法觸發(fā)
問題描述
在我得藍(lán)圖當(dāng)中我定義了 一個(gè)接受者
# -*- 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)入了我藍(lán)圖中的這個(gè)方法
在models.py 中定義了__commit_update__()方法來執(zhí)行處理邏輯
但是現(xiàn)在信號無法觸發(fā),求問哪里出錯(cuò)了?
問題解答
回答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 - iOS的webview加載出來的H5網(wǎng)頁,怎么修改html標(biāo)簽select的樣式字體?2. java-se - 正在學(xué)習(xí)Java SE,為什么感覺學(xué)習(xí)Java就是在學(xué)習(xí)一些API。3. 一個(gè)mysql聯(lián)表查詢的問題4. 運(yùn)行python程序時(shí)出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯(cuò)誤?5. python - 如何使用pykafka consumer進(jìn)行數(shù)據(jù)處理并保存?6. javascript - git clone 下來的項(xiàng)目 想在本地運(yùn)行 npm run install 報(bào)錯(cuò)7. 主從備份 - 跪求mysql 高可用主從方案8. python - django 里自定義的 login 方法,如何使用 login_required()9. mysql主從 - 請教下mysql 主動-被動模式的雙主配置 和 主從配置在應(yīng)用上有什么區(qū)別?10. mysql - 一個(gè)表和多個(gè)表是多對多的關(guān)系,該怎么設(shè)計(jì)
