關于flask-sqlalchemy中數(shù)據(jù)庫操作的問題整理

此文為本人原創(chuàng),最早發(fā)布于求助《Flask Web 開發(fā)》第五章關于數(shù)據(jù)庫db.session.add()和db.session.commit()問題幽七。內(nèi)容并不完善溅呢,持續(xù)更新,可隨意轉載咐旧。轉載請標明出處。

問題簡述:

當加入SQLALCHEMY_ON_TEARDOWN=True铣墨,在什么情況下仍然要執(zhí)行db.session.commit()

解答整理如下:

config是在app/__init__.py中調用的室埋,所以執(zhí)行model.py中的方法時,SQLALCHEMY_COMMIT_ON_TEARDOWN = True已經(jīng)生效了伊约。即請求結束后自動commit姚淆。

后面幾個章節(jié)中出現(xiàn)db.session.commit()的主要作用都是為了生成id來使用。

你可以結合源碼看一下屡律。

session的原理就請參考Flask 源碼閱讀筆記腌逢。

SQLALCHEMY_ON_TEARDOWN在flask-sqlalchemy 2.0之后已經(jīng)被刪除了,需要用SQLALCHEMY_TRACK_MODIFICATIONS替代超埋,想必你運行的時候應該看到過相關提示搏讶。

參考文章:Flask-SQLAlchemy 配置問題

這個新熟悉我還沒掌握,抽空看下documentation再來分析纳本。也希望需要幫助的同學參考一下 fondoger 同學的評論

繼續(xù)回到SQLALCHEMY_ON_TEARDOWN窍蓝。按照書上的說法:

將其設為True時,每次請求結束后都會自動提交數(shù)據(jù)庫中的變動吓笙。

因為v1.0的如果這里的documentation已經(jīng)找不到了,沒有依據(jù)巾腕,我就在這推測一下:

只有當請求結束的時候,才會自動commit叁鉴,而直接操作數(shù)據(jù)庫是不行的,需要手動commit佛寿。

回到model.py中看但壮,insert_roles()@staticmethod包裝,是一個靜態(tài)方法常侣,它執(zhí)行的位置是在python manage.py shell中蜡饵,而非請求中,所以需要手動commit胳施。

你可以驗證一下溯祸,方法也很簡單,保證寫入SQLALCHEMY_ON_TEARDONW=True后舞肆,在shell中嘗試:

>>> user = User(username='test')
>>> db.session.add(user)
>>> quit()

再次進入shell焦辅,查找<User u'test'>,不存在椿胯,即推斷合理:shell中執(zhí)行的用于操作數(shù)據(jù)庫的方法還是要加commit筷登。


我的帖子與回答都會持續(xù)更新。如果您覺得有幫助哩盲,煩請點個贊仆抵,這樣或許能幫到其它朋友。

如果我有誤導他人的地方种冬,請與我聯(lián)系,我會及時修改舔糖。謝謝娱两!

如果有需要的朋友金吗,可以看看我的website旱物,希望對大家有所幫助。

關于網(wǎng)頁中已有的功能都可以和我交流宝穗,歡迎查找bug,交流心得须鼎。謝謝!

jtr-todo.herokuapp.com

(網(wǎng)站處于測試階段糖荒,請勿保存重要信息蜘矢,數(shù)據(jù)丟失概不負責,還請見諒舞吭。)

辭職學習中,有工作機會歡迎與我聯(lián)系惧浴,謝謝!

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末操软,一起剝皮案震驚了整個濱河市猪钮,隨后出現(xiàn)的幾起案子烤低,更是在濱河造成了極大的恐慌,老刑警劉巖笆载,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扑馁,死亡現(xiàn)場離奇詭異涯呻,居然都是意外死亡,警方通過查閱死者的電腦和手機腻要,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門复罐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雄家,你說我怎么就攤上這事趟济÷彝叮” “怎么了戚炫?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長媳纬。 經(jīng)常有香客問我双肤,道長,這世上最難降的妖魔是什么钮惠? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任茅糜,我火速辦了婚禮,結果婚禮上素挽,老公的妹妹穿的比我還像新娘限匣。我一直安慰自己,他們只是感情好毁菱,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锌历,像睡著了一般贮庞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上究西,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天窗慎,我揣著相機與錄音,去河邊找鬼卤材。 笑死遮斥,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的扇丛。 我是一名探鬼主播术吗,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼帆精!你這毒婦竟也來了较屿?” 一聲冷哼從身側響起隧魄,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隘蝎,沒想到半個月后购啄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡嘱么,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年狮含,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曼振。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡几迄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拴测,到底是詐尸還是另有隱情乓旗,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布集索,位于F島的核電站屿愚,受9級特大地震影響,放射性物質發(fā)生泄漏务荆。R本人自食惡果不足惜妆距,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望函匕。 院中可真熱鬧娱据,春花似錦、人聲如沸盅惜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抒寂。三九已至结啼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屈芜,已是汗流浹背郊愧。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留井佑,地道東北人属铁。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像躬翁,于是被迫代替她去往敵國和親焦蘑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容