|
|
@@ -1,42 +1,51 @@
|
|
|
import os
|
|
|
-import time
|
|
|
from flask import Flask
|
|
|
import mysql.connector
|
|
|
|
|
|
-passfile = open('/run/secrets/db-password', 'r')
|
|
|
-
|
|
|
-#give db some time to start
|
|
|
-time.sleep(5)
|
|
|
-
|
|
|
-#connect to db
|
|
|
-conn = mysql.connector.connect(
|
|
|
- user='root',
|
|
|
- password=passfile.read(),
|
|
|
- host='db', # name of the mysql service as set in the docker-compose file
|
|
|
- database='example',
|
|
|
- auth_plugin='mysql_native_password'
|
|
|
-)
|
|
|
-
|
|
|
-passfile.close()
|
|
|
-# populate db
|
|
|
-cursor = conn.cursor()
|
|
|
-def prepare_db():
|
|
|
- cursor.execute('DROP TABLE IF EXISTS blog')
|
|
|
- cursor.execute('CREATE TABLE blog (id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255))')
|
|
|
- cursor.executemany('INSERT INTO blog (id, title) VALUES (%s, %s);', [(i, 'Blog post #%d'% i) for i in range (1,5)])
|
|
|
- conn.commit()
|
|
|
-prepare_db()
|
|
|
-
|
|
|
-# server
|
|
|
-app = Flask(__name__)
|
|
|
-@app.route('/')
|
|
|
+
|
|
|
+class DBManager:
|
|
|
+ def __init__(self, database='example', host="db", user="root", password_file=None):
|
|
|
+ pf = open(password_file, 'r')
|
|
|
+ self.connection = mysql.connector.connect(
|
|
|
+ user=user,
|
|
|
+ password=pf.read(),
|
|
|
+ host=host, # name of the mysql service as set in the docker-compose file
|
|
|
+ database=database,
|
|
|
+ auth_plugin='mysql_native_password'
|
|
|
+ )
|
|
|
+ pf.close()
|
|
|
+ self.cursor = self.connection.cursor()
|
|
|
+
|
|
|
+ def populate_db(self):
|
|
|
+ self.cursor.execute('DROP TABLE IF EXISTS blog')
|
|
|
+ self.cursor.execute('CREATE TABLE blog (id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255))')
|
|
|
+ self.cursor.executemany('INSERT INTO blog (id, title) VALUES (%s, %s);', [(i, 'Blog post #%d'% i) for i in range (1,5)])
|
|
|
+ self.connection.commit()
|
|
|
+
|
|
|
+ def query_titles(self):
|
|
|
+ self.cursor.execute('SELECT title FROM blog')
|
|
|
+ rec = []
|
|
|
+ for c in self.cursor:
|
|
|
+ rec.append(c[0])
|
|
|
+ return rec
|
|
|
+
|
|
|
+
|
|
|
+server = Flask(__name__)
|
|
|
+conn = None
|
|
|
+
|
|
|
+@server.route('/')
|
|
|
def listBlog():
|
|
|
- cursor.execute('SELECT title FROM blog')
|
|
|
+ global conn
|
|
|
+ if not conn:
|
|
|
+ conn = DBManager(password_file='/run/secrets/db-password')
|
|
|
+ conn.populate_db()
|
|
|
+ rec = conn.query_titles()
|
|
|
+
|
|
|
response = ''
|
|
|
- for c in cursor:
|
|
|
- response = response + '<div>' + c[0] + '</div>'
|
|
|
+ for c in rec:
|
|
|
+ response = response + '<div> Hello ' + c + '</div>'
|
|
|
return response
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
- app.run()
|
|
|
+ server.run()
|