【发布时间】:2019-10-30 14:03:17
【问题描述】:
我正在使用 Flask 和 SqlAlchemy。当我尝试运行我的网站时,我为 SqlAlchemy 创建的数据库似乎搞砸了,并且会弹出错误消息,指出存在线程错误。我想知道是不是因为我没有从以前的模式中删除我的表。我正在使用 linux 服务器尝试运行“python3”和文件来设置我的数据库。
我试图从我的本地驱动器中物理删除该表并重新运行它,但我仍然出现此错误。
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import scoped_session
from database_setup import Base, Category, Item
engine = create_engine('sqlite:///database_tables.db')
Base.metadata.bind = engine
Session = sessionmaker()
Session.bind = engine
session = Session()
brushes = Category(id = 1, category_name = 'Brushes')
session.add(brushes)
session.commit()
pencils = Category(id = 2, category_name = 'Pencils')
session.add(pencils)
session.commit()
当我使用 Flask 处于调试模式时,我单击了使用这些行创建的链接,但在单击三下后我得到了错误
"(sqlite3.ProgrammingError) SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 140244909291264 and this is thread id 140244900898560 [SQL: SELECT category.id AS category_id, category.category_name AS category_category_name FROM category] [parameters: [{}]] (Background on this error at: http://sqlalche.me/e/f405)"
【问题讨论】:
-
我知道它没有回答你的问题,但你看过Flask-SQLalchemy吗?它旨在为您处理其中一些场景。
-
我还没看。我一定会读一读,非常感谢。
-
否则,AFAIK,您可能只需要使用
scoped_session而不是Session():session = scoped_session(Session) -
我试试看,谢谢。
标签: python multithreading sqlite flask sqlalchemy