From 89621af85d0fa2f855f6a05a6255f939e8645235 Mon Sep 17 00:00:00 2001 From: Alan Orth Date: Mon, 24 Sep 2018 00:00:05 +0300 Subject: [PATCH] Split database access into RW and RO The indexer need to be able to write to the database, but the API only needs to read it. --- app.py | 4 ++-- database.py | 9 ++++++++- indexer.py | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app.py b/app.py index 1f54588..5c9884e 100644 --- a/app.py +++ b/app.py @@ -3,11 +3,11 @@ # https://wiki.duraspace.org/display/DSPACE/Solr from config import SOLR_CORE -from database import database_connection +from database import database_connection_ro import falcon from solr import solr_connection -db = database_connection() +db = database_connection_ro() solr = solr_connection() class ItemResource: diff --git a/database.py b/database.py index fa5ed53..392bb97 100644 --- a/database.py +++ b/database.py @@ -1,11 +1,18 @@ from config import SQLITE_DB import sqlite3 -def database_connection(): +def database_connection_rw(): connection = sqlite3.connect(SQLITE_DB) # allow iterating over row results by column key connection.row_factory = sqlite3.Row return connection +def database_connection_ro(): + connection = sqlite3.connect('file:{0}?mode=ro'.format(SQLITE_DB), uri=True) + # allow iterating over row results by column key + connection.row_factory = sqlite3.Row + + return connection + # vim: set sw=4 ts=4 expandtab: diff --git a/indexer.py b/indexer.py index 2e50e11..c1a0b42 100755 --- a/indexer.py +++ b/indexer.py @@ -5,7 +5,7 @@ # https://wiki.duraspace.org/display/DSPACE/Solr from config import SOLR_CORE -from database import database_connection +from database import database_connection_rw from solr import solr_connection def index_views(): @@ -90,7 +90,7 @@ def index_downloads(): results_current_page += 1 -db = database_connection() +db = database_connection_rw() solr = solr_connection() # use separate views and downloads tables so we can REPLACE INTO carelessly (ie, item may have views but no downloads)