[tor-commits] [pytorctl/master] Make memory-only sqlite work.

mikeperry at torproject.org mikeperry at torproject.org
Wed Nov 16 02:44:09 UTC 2011


commit 3de91767e208d1642a8cf89dc1b645f637abaf8e
Author: Mike Perry <mikeperry-git at fscked.org>
Date:   Tue Nov 15 18:42:18 2011 -0800

    Make memory-only sqlite work.
---
 SQLSupport.py |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/SQLSupport.py b/SQLSupport.py
index e50dd71..28963fc 100644
--- a/SQLSupport.py
+++ b/SQLSupport.py
@@ -22,6 +22,7 @@ from TorUtil import meta_port, meta_host, control_port, control_host, control_pa
 from TorCtl import EVENT_TYPE, EVENT_STATE, TorCtlError
 
 import sqlalchemy
+import sqlalchemy.pool
 import sqlalchemy.orm.exc
 from sqlalchemy.orm import scoped_session, sessionmaker, eagerload, lazyload, eagerload_all
 from sqlalchemy.orm.exc import NoResultFound
@@ -58,7 +59,13 @@ tc_metadata.echo=True
 tc_session = scoped_session(sessionmaker(autoflush=True))
 
 def setup_db(db_uri, echo=False, drop=False):
-  tc_engine = create_engine(db_uri, echo=echo)
+  # Memory-only sqlite requires some magic options...
+  if db_uri == "sqlite://":
+    tc_engine = create_engine(db_uri, echo=echo,
+                              connect_args={'check_same_thread':False},
+                              poolclass=sqlalchemy.pool.StaticPool)
+  else:
+    tc_engine = create_engine(db_uri, echo=echo)
   tc_metadata.bind = tc_engine
   tc_metadata.echo = echo
 



More information about the tor-commits mailing list