From c7815e48781b6d3a457eaff1808d179402558f8c Mon Sep 17 00:00:00 2001 From: 0livd Date: Sun, 6 Aug 2017 04:06:21 +0200 Subject: [PATCH] Fix #248: Database creation issue (#254) In flask's development server, the route handlers run in a different thread than the main thread thus an in-memory database created in the main thread cannot be acccessed by the route handlers. Switching the default database location to a temporary file solves the isssue. See full explanation here: https://gehrcke.de/2015/05/in-memory-sqlite-database-and-flask-a-threading-trap/ --- ihatemoney/default_settings.py | 2 +- ihatemoney/tests/tests.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ihatemoney/default_settings.py b/ihatemoney/default_settings.py index 4ca11ca6..fcb41db5 100644 --- a/ihatemoney/default_settings.py +++ b/ihatemoney/default_settings.py @@ -8,7 +8,7 @@ DEBUG = False # The database URI, reprensenting the type of database and how to connect to it. # Enter an absolute path here. -SQLALCHEMY_DATABASE_URI = 'sqlite://' +SQLALCHEMY_DATABASE_URI = 'sqlite:////tmp/ihatemoney.db' SQLACHEMY_ECHO = DEBUG # Will likely become the default value in flask-sqlalchemy >=3 ; could be removed diff --git a/ihatemoney/tests/tests.py b/ihatemoney/tests/tests.py index cb92756e..5fc45a74 100644 --- a/ihatemoney/tests/tests.py +++ b/ihatemoney/tests/tests.py @@ -77,7 +77,7 @@ class ConfigurationTestCase(BaseTestCase): def test_default_configuration(self): """Test that default settings are loaded when no other configuration file is specified""" self.assertFalse(self.app.config['DEBUG']) - self.assertEqual(self.app.config['SQLALCHEMY_DATABASE_URI'], 'sqlite://') + self.assertEqual(self.app.config['SQLALCHEMY_DATABASE_URI'], 'sqlite:////tmp/ihatemoney.db') self.assertFalse(self.app.config['SQLALCHEMY_TRACK_MODIFICATIONS']) self.assertEqual(self.app.config['MAIL_DEFAULT_SENDER'], ("Budget manager", "budget@notmyidea.org"))