从flask中使用SQLAlchemy的会议上提出了“SQLite的对象一个线程创建只能在同一个线程中使用”

从flask中使用SQLAlchemy的会议上提出了“SQLite的对象一个线程创建只能在同一个线程中使用”,第1张

从flask中使用SQLAlchemy的会议上提出了“SQLite的对象一个线程创建只能在同一个线程中使用”

如果共享线程之间的会话的SQLAlchemy(在这种情况下SQLite的也有)不起作用。您可能没有使用线程明确,但

mod_wsgi
就是和你定义一个全局
session
对象。无论是使用
scoped_session
处理创建为每个线程唯一的会话。

session = scoped_session(sessionmaker(bind=engine))@app.teardown_requestdef remove_session(ex=None):    session.remove()@app.route('/')def example():    item = session.query(MyModel).filter(...).all()    ...

最好使用烧瓶SQLAlchemy的它处理这个和其他的东西给你。在SQLAlchemy的文档建议您使用集成库,而不是这样做你自己。

db = SQLAlchemy(app)@app.route('/')def example():    item = db.session.query(MyModel).filter(...).all()    ...

还要注意的是,你应该只定义引擎,会话等曾经和其他地方进口的,而不是像当前的代码不会在每个文件重新定义。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5645261.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存