From 39fe6afc39e9707dedc4bc99f04e7accb5bfdf55 Mon Sep 17 00:00:00 2001 From: Douglas Blank Date: Tue, 24 Jul 2018 17:05:08 -0400 Subject: [PATCH] Allow to work with sqlite :memory: database --- activitypub/database/sqldb.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/activitypub/database/sqldb.py b/activitypub/database/sqldb.py index 20dc57b..2bccfd5 100644 --- a/activitypub/database/sqldb.py +++ b/activitypub/database/sqldb.py @@ -1,5 +1,6 @@ from sqlalchemy import create_engine, inspect from sqlalchemy.orm import scoped_session, sessionmaker +from sqlalchemy.pool import StaticPool import logging import json @@ -185,8 +186,19 @@ class SQLDatabase(Database): def __init__(self, *args, **kwargs): super().__init__() - self.engine = create_engine(*args, **kwargs) - self.session = scoped_session(sessionmaker(bind=self.engine)) + args = list(args) + if args[0].endswith(":memory:"): + args[0] = args[0].replace(":memory:", "") + if args[0] == "sqlite://": # in-memory + kwargs.update({ + "connect_args": {'check_same_thread': False}, + "poolclass": StaticPool, + }) + self.engine = create_engine(*args, **kwargs) + self.session = sessionmaker(bind=self.engine)() + else: + self.engine = create_engine(*args, **kwargs) + self.session = scoped_session(sessionmaker(bind=self.engine)) def commit(self): self.session.commit()