From 2468d5a699903e49e332b21818955e7dd0ff060b Mon Sep 17 00:00:00 2001
From: Julian Rother <julianr@fsmpi.rwth-aachen.de>
Date: Fri, 19 Aug 2016 04:38:51 +0200
Subject: [PATCH] Implement database initialisation

---
 .gitignore |  1 +
 config.py  |  2 ++
 server.py  | 16 ++++++++++++++++
 3 files changed, 19 insertions(+)

diff --git a/.gitignore b/.gitignore
index 1a6ee45..d4ec164 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 *.swp
 config.py
 __pycache__
+*.sqlite
diff --git a/config.py b/config.py
index d8e9800..7c9da57 100644
--- a/config.py
+++ b/config.py
@@ -9,3 +9,5 @@ DEBUG = True
 
 SQLITE_DB = 'db.sqlite'
 DB_ENGINE = 'sqlite'
+SQLITE_INIT_SCHEMA = True
+SQLITE_INIT_DATA = True
diff --git a/server.py b/server.py
index 2442fcf..d1d4aaa 100755
--- a/server.py
+++ b/server.py
@@ -2,11 +2,27 @@
 from flask import Flask, render_template, g
 import mysql.connector
 import sqlite3
+import os
 
 app = Flask(__name__)
 config = app.config
+config['DB_SCHEMA'] = 'db_schema.sql'
+config['DB_DATA'] = 'db_example.sql'
+config['SQLITE_INIT_SCHEMA'] = False
+config['SQLITE_INIT_DATA'] = False
 config.from_pyfile('config.py')
 
+if config['DB_ENGINE'] == 'sqlite':
+	created = not os.path.exists(config['SQLITE_DB'])
+	db = sqlite3.connect(config['SQLITE_DB'])
+	cur = db.cursor()
+	if config['SQLITE_INIT_SCHEMA']:
+		cur.executescript(open(config['DB_SCHEMA']).read())
+	if config['SQLITE_INIT_DATA'] and created:
+		cur.executescript(open(config['DB_DATA']).read())
+	db.commit()
+	db.close()
+
 # Row wrapper for sqlite
 def dict_factory(cursor, row):
 	d = {}
-- 
GitLab