Skip to content

Commit

Permalink
Improved flask backend
Browse files Browse the repository at this point in the history
  • Loading branch information
aiordache committed Mar 20, 2020
1 parent dcac9e0 commit 6c87541
Showing 1 changed file with 41 additions and 32 deletions.
73 changes: 41 additions & 32 deletions nginx-flask-mysql/backend/hello.py
Original file line number Diff line number Diff line change
@@ -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()

0 comments on commit 6c87541

Please sign in to comment.