鍍金池/ 問答/Python  Linux  數(shù)據(jù)庫/ flask-sqlalchemy 的session問題?

flask-sqlalchemy 的session問題?

照著書上敲,一直會(huì)報(bào)這個(gè)錯(cuò)誤,大概是說這個(gè)錯(cuò)誤是說只能在同一個(gè)線程中使用吧?是不是要用到creat_scoped_session 呢,請(qǐng)各位大佬指點(diǎn)一下,謝謝!
圖片描述

sqlalchemy.exc.ProgrammingError: (sqlite3.ProgrammingError) SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 139878844028672 and this is thread id 139878951810816 (Background on this error at: http://sqlalche.me/e/f405)

回答
編輯回答
貓館

不了解你完整的業(yè)務(wù)場(chǎng)景,但是跨線程的話,一般是需要傳遞app_context的。

# 線程一,然后將這個(gè)參數(shù)傳遞給線程二
app_context = flask.current_app.app_context()

# 線程二,此處的app_context為線程一中傳遞來的參數(shù)
with app_context:
  ........
2017年9月23日 01:43
編輯回答
荒城

你的 flask 配置文件 config.py 中如果配置了

SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_COMMIT_ON_TEARDOWN = True

那么你就不再需要在程序中顯式的寫入 db.session.commit() 了。

2017年6月14日 03:32
編輯回答
玄鳥

把數(shù)據(jù)庫的uri改成這樣試試看:

SQLALCHEMY_DATABASE_URI = 'sqlite:///xxxx.db?check_same_thread=False'

有慕課網(wǎng)收費(fèi)視頻,需要的看我主頁

2018年7月19日 20:53
編輯回答
尋仙

是說對(duì)象跨線程使用了?能說下完整的業(yè)務(wù)場(chǎng)景么?

2018年7月17日 13:19