From fdeacdca6e0dc37d6e85510273a033725a00461c Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Fri, 16 Jun 2023 12:25:53 +0200 Subject: [PATCH] Datenmodell neu, Verbindungsdaten Flask aus einer Datei laden --- README.md | 4 +--- docs/BremenCalling_Datenmodell.xlsx | Bin 18013 -> 23037 bytes docs/UserStories.xlsx | Bin 28882 -> 29598 bytes src/server/BreCal/connection_data.json | 9 +++++++++ src/server/BreCal/local_db.py | 24 +++++++++++++++--------- 5 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 src/server/BreCal/connection_data.json diff --git a/README.md b/README.md index 2fb0a6d..41a007a 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,5 @@ Ein erster Gedanke des Datenbank-Layouts sieht folgendermaßen aus: ### Postman - Zum Debuggen der Flask App verwende ich dieses Tutorial: -https://code.visualstudio.com/docs/python/tutorial-flask#_create-a-project-environment-for-the-flask-tutorial - +https://code.visualstudio.com/docs/python/tutorial-flask#_create-a-project-environment-for-the-flask-tutorial \ No newline at end of file diff --git a/docs/BremenCalling_Datenmodell.xlsx b/docs/BremenCalling_Datenmodell.xlsx index 2c102a1ee2c8827a03f213f29c49a95c23543cc7..09f36b6d3399826d725a2452f854847a1cdd036f 100644 GIT binary patch delta 17452 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 a&hB-^NI@DB>a`IH@J}5G9HsL5?f(HRRe2i# delta 12743 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 delta 15372 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 Vak~pb?Aw4m-6>#@9R4x={{hST&d&e< diff --git a/src/server/BreCal/connection_data.json b/src/server/BreCal/connection_data.json new file mode 100644 index 0000000..f07690d --- /dev/null +++ b/src/server/BreCal/connection_data.json @@ -0,0 +1,9 @@ +{ +"host" : "lager", +"port" : 3306, +"user" : "ds", +"password" : "HalloWach23", +"pool_name" : "brecal_pool", +"pool_size" : 20, +"database" : "bremen_calling" +} \ No newline at end of file diff --git a/src/server/BreCal/local_db.py b/src/server/BreCal/local_db.py index ed115a8..7c38aeb 100644 --- a/src/server/BreCal/local_db.py +++ b/src/server/BreCal/local_db.py @@ -1,21 +1,25 @@ import mysql.connector import pydapper import logging +import json +import os connection_pool = None def initPool(): try: global connection_pool - connection_pool = mysql.connector.connect( - host="lager", # TODO: move these settings outside the code! - port=3306, - user="ds", - password="HalloWach23", - pool_name="brecal_pool", - pool_size=20, - database="bremen_calling" - ) + + config_path = './src/server/BreCal/connection_data.json' + print (os.getcwd()) + if not os.path.exists(config_path): + print ('cannot find ' + config_path) + exit(1) + + f = open(config_path); + connection_data = json.load(f) + + connection_pool = mysql.connector.connect(**connection_data) commands = pydapper.using(connection_pool) data = commands.query_single("SELECT id from `user`") @@ -23,4 +27,6 @@ def initPool(): except mysql.connector.PoolError as e: logging.error(f"Failed to create connection pool: {e}") + print(e) + except e: print(e) \ No newline at end of file