mercredi 23 septembre 2015

ProgrammingError: (sqlite3.ProgrammingError) SQLite objects created in a thread can only be used in that same thread

I keep getting the following error: ProgrammingError: (sqlite3.ProgrammingError) SQLite objects created in a thread can only be used in that same thread. I am currently trying to create objects for a SQLALCHEMY built database through Pyramid : Alchemy and Jinja2 templates; the system was working, but now suddenly it is raising this issue.

I read here on Stacks and some Python docs, some resolutions and tried to implement them. They did not work though.

I am uncertain if the issue is my DB session configuration, but based on the traceback, I imagine so.

Configuration in SQLALCHEMY DB (custom API):

def __init__(self):
    configure = {'sqlalchemy.url':'sqlite:////Users/ack/code/venv/NotssDB/notssdb/notssdb.db', 'sqlalchemy.echo':'False'}
    self.engine = engine_from_config(configure, prefix='sqlalchemy.')
    session_factory = sessionmaker(autoflush=True,autocommit=False,bind=engine)
    Session = scoped_session(session_factory)
    self.session = Session()
    Base.metadata.create_all(bind=engine)
    Session.remove()
    print('--NOTSSdb Session--')

FULL ERROR:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/pyramid_debugtoolbar-http://ift.tt/1NM4HGU", line 192, in toolbar_tween
    response = _handler(request)
  File "/usr/local/lib/python2.7/site-packages/pyramid_debugtoolbar-http://ift.tt/1gNqf93", line 57, in resource_timer_handler
    result = handler(request)
  File "/usr/local/lib/python2.7/site-packages/http://ift.tt/1gNqcKi", line 21, in excview_tween
    response = handler(request)
  File "/usr/local/lib/python2.7/site-packages/pyramid_tm-http://ift.tt/1N9AK3m", line 99, in tm_tween
    reraise(*exc_info)
  File "/usr/local/lib/python2.7/site-packages/pyramid_tm-http://ift.tt/1N9AK3m", line 80, in tm_tween
    response = handler(request)
  File "/usr/local/lib/python2.7/site-packages/http://ift.tt/1gNqf97", line 163, in handle_request
    response = view_callable(context, request)
  File "/usr/local/lib/python2.7/site-packages/http://ift.tt/1NM4Fib", line 596, in __call__
    return view(context, request)
  File "/usr/local/lib/python2.7/site-packages/http://ift.tt/1NM4Fib", line 329, in attr_view
    return view(context, request)
  File "/usr/local/lib/python2.7/site-packages/http://ift.tt/1NM4Fib", line 305, in predicate_wrapper
    return view(context, request)
  File "/usr/local/lib/python2.7/site-packages/http://ift.tt/1NM4Fib", line 355, in rendered_view
    result = view(context, request)
  File "/usr/local/lib/python2.7/site-packages/http://ift.tt/1NM4Fib", line 477, in _class_requestonly_view
    response = getattr(inst, attr)()
  File "/Users/ack/code/venv/NotssWEB/notssweb/views/views.py", line 95, in post_video
    video = self.API.create_video(videoname, length, url)
  File "/usr/local/lib/python2.7/site-packages/notssdb/api/object.py", line 146, in create_video
    self.session.commit()
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 790, in commit
    self.transaction.commit()
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 392, in commit
    self._prepare_impl()
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 372, in _prepare_impl
    self.session.flush()
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 2004, in flush
    self._flush(objects)
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 2122, in _flush
    transaction.rollback(_capture_exception=True)
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 63, in __exit__
    compat.reraise(type_, value, traceback)
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 2122, in _flush
    transaction.rollback(_capture_exception=True)
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 419, in rollback
    transaction._rollback_impl()
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 449, in _rollback_impl
    t[1].rollback()
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1557, in rollback
    self._do_rollback()
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1595, in _do_rollback
    self.connection._rollback_impl()
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 670, in _rollback_impl
    self._handle_dbapi_exception(e, None, None, None, None)
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1339, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 668, in _rollback_impl
    self.engine.dialect.do_rollback(self.connection)
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 412, in do_rollback
    dbapi_connection.rollback()
ProgrammingError: (sqlite3.ProgrammingError) SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 4524335104 and this is thread id 4532748288

Aucun commentaire:

Enregistrer un commentaire