Improved flask backend

master
Anca 5 years ago
parent dcac9e0722
commit 6c8754131d

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

Loading…
Cancel
Save