From 6b6a846b29ea7fa31e7834743ad504aa31be6acb Mon Sep 17 00:00:00 2001
From: Martijn Vermaat <martijn@vermaat.name>
Date: Sat, 22 Feb 2014 23:43:47 +0100
Subject: [PATCH] Conveniently create tables on first use for in-memory SQLite

---
 mutalyzer/db/__init__.py       | 7 +++++++
 mutalyzer/entrypoints/admin.py | 2 --
 tests/fixtures.py              | 1 -
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/mutalyzer/db/__init__.py b/mutalyzer/db/__init__.py
index 8282e824..3e4fc6ea 100644
--- a/mutalyzer/db/__init__.py
+++ b/mutalyzer/db/__init__.py
@@ -42,6 +42,13 @@ def create_engine():
             connect_args={'check_same_thread': False},
             poolclass=StaticPool)
 
+        engine = sqlalchemy.create_engine(url, **options)
+
+        # For convenience, we also create tables if we're using an SQLite
+        # in-memory database. By definition they won't yet exist
+        Base.metadata.create_all(engine)
+        return engine
+
     return sqlalchemy.create_engine(url, **options)
 
 
diff --git a/mutalyzer/entrypoints/admin.py b/mutalyzer/entrypoints/admin.py
index 613ba197..d0458dbe 100644
--- a/mutalyzer/entrypoints/admin.py
+++ b/mutalyzer/entrypoints/admin.py
@@ -161,9 +161,7 @@ def setup_database(alembic_config_path=None, destructive=False):
 
     if destructive:
         db.Base.metadata.drop_all(db.session.get_bind())
-
     db.Base.metadata.create_all(db.session.get_bind())
-    db.session.commit()
 
     if alembic_config_path:
         context = MigrationContext.configure(db.session.connection())
diff --git a/tests/fixtures.py b/tests/fixtures.py
index d699912b..e25d018d 100644
--- a/tests/fixtures.py
+++ b/tests/fixtures.py
@@ -162,7 +162,6 @@ def database():
     Fixture for database table definitions.
     """
     Base.metadata.create_all(session.get_bind())
-    session.commit()
 
 
 def hg19():
-- 
GitLab