flask-sqlalchemy 的session问题?

照着书上敲,一直会报这个错误,大概是说这个错误是说只能在同一个线程中使用吧?是不是要用到creat_scoped_session 呢,请各位大佬指点一下,谢谢!
图片描述

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)

阅读 6.6k
4 个回答

把数据库的uri改成这样试试看:

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

有慕课网收费视频,需要的看我主页

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

SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_COMMIT_ON_TEARDOWN = True

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

是说对象跨线程使用了?能说下完整的业务场景么?

不了解你完整的业务场景,但是跨线程的话,一般是需要传递app_context的。

# 线程一,然后将这个参数传递给线程二
app_context = flask.current_app.app_context()

# 线程二,此处的app_context为线程一中传递来的参数
with app_context:
  ........
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏