This commit is contained in:
Wolfgang Hottgenroth 2024-01-30 14:47:07 +01:00
parent 21479212f8
commit 439f6085e7
Signed by: wn
GPG Key ID: 836E9E1192A6B132
2 changed files with 47 additions and 86 deletions

View File

@ -4,6 +4,7 @@ from flask_oidc import OpenIDConnect
from werkzeug.middleware.proxy_fix import ProxyFix from werkzeug.middleware.proxy_fix import ProxyFix
import os import os
import json import json
import psycopg2
app = Flask(__name__) app = Flask(__name__)
app.config.update({ app.config.update({
@ -19,61 +20,17 @@ app.config.update({
oidc = OpenIDConnect(app) oidc = OpenIDConnect(app)
# Datenbankverbindung konfigurieren
def get_db_connection():
conn = sqlite3.connect('nutrition.db') # 'nutrition.db' ist der Name der Datenbankdatei
conn.row_factory = sqlite3.Row # Ermöglicht den Zugriff auf Daten durch Spaltennamen
return conn
#def init_db():
# conn = get_db_connection()
# cursor = conn.cursor()
#
# # Erstellen der Tabelle
# cursor.execute('''
# CREATE TABLE IF NOT EXISTS nutrition_table (
# id INTEGER PRIMARY KEY,
# name TEXT NOT NULL,
# kcal REAL,
# EW REAL,
# Fett REAL,
# KH REAL,
# BST REAL,
# CA REAL
# )
# ''')
#
# # Testdaten einfügen
# test_data = [
# ('Apfel', 52, 0.3, 0.2, 14, 0.2, 6),
# ('Banane', 89, 1.1, 0.3, 23, 0.3, 5),
# ('Karotte', 41, 0.9, 0.2, 10, 0.2, 3),
# ('Tomate', 18, 0.9, 0.2, 3.9, 0.2, 4),
# ('Brokkoli', 34, 2.8, 0.4, 6.6, 0.4, 2),
# ('Spinat', 23, 2.9, 0.4, 3.6, 0.4, 99),
# ('Kartoffel', 77, 2, 0.1, 17, 0.1, 12),
# ('Huhn', 239, 27, 14, 0, 0, 2),
# ('Lachs', 208, 20, 13, 0, 0, 1),
# ('Ei', 155, 13, 11, 1.1, 1, 1)
# ]
#
# cursor.executemany('INSERT INTO nutrition_table (name, kcal, EW, Fett, KH, BST, CA) VALUES (?, ?, ?, ?, ?, ?, ?)', test_data)
#
# conn.commit()
# conn.close()
def calculate_nutrition(food, weight): def calculate_nutrition(food, weight):
conn = get_db_connection() try:
cursor = conn.cursor() conn = psycopg2.connect()
with conn.cursor() as cursor:
# Abfrage der Nährwertdaten aus der Datenbank # Abfrage der Nährwertdaten aus der Datenbank
cursor.execute('SELECT kcal, EW, Fett, KH, BST, CA FROM nutrition_table WHERE name = ?', (food,)) cursor.execute('SELECT kcal, EW, Fett, KH, BST, CA FROM nutrition_table WHERE name = ?', (food,))
result = cursor.fetchone() result = cursor.fetchone()
conn.close()
if result: if result:
# Runden und Berechnen der Nährwerte basierend auf dem Gewicht # Runden und Berechnen der Nährwerte basierend auf dem Gewicht
@ -89,6 +46,9 @@ def calculate_nutrition(food, weight):
return nutrition_values return nutrition_values
else: else:
return None return None
finally:
if conn:
conn.close()
# Index-Route # Index-Route
@ -102,16 +62,16 @@ def index():
@app.route('/get_products') @app.route('/get_products')
@oidc.require_login @oidc.require_login
def get_products(): def get_products():
conn = get_db_connection() try:
cursor = conn.cursor() conn = psycopg2.connect()
with conn.cursor() as cursor:
cursor.execute('SELECT name FROM nutrition_table') cursor.execute('SELECT name FROM nutrition_table')
products = cursor.fetchall() products = cursor.fetchall()
conn.close()
print("ter") print("ter")
return {'products': [product[0] for product in products]} return {'products': [product[0] for product in products]}
finally:
if conn:
conn.close()
# Route zum Hinzufügen und Berechnen von Lebensmitteln # Route zum Hinzufügen und Berechnen von Lebensmitteln
@ -152,14 +112,16 @@ def add_nutrition():
print("test") print("test")
# Verbindung zur Datenbank herstellen und Daten einfügen # Verbindung zur Datenbank herstellen und Daten einfügen
conn = get_db_connection() try:
cursor = conn.cursor() conn = psycopg2.connect()
with conn.cursor() as cursor:
cursor.execute("INSERT INTO nutrition_table (name, kcal, ew, fett, kh, bst, ca) VALUES (?, ?, ?, ?, ?, ?, ?)", cursor.execute("INSERT INTO nutrition_table (name, kcal, ew, fett, kh, bst, ca) VALUES (?, ?, ?, ?, ?, ?, ?)",
(food, kcal, ew, fett, kh, bst, ca)) (food, kcal, ew, fett, kh, bst, ca))
conn.commit()
conn.close()
return redirect(url_for('nutrition')) return redirect(url_for('nutrition'))
finally:
if conn:
conn.close()
@app.route('/nutrition') @app.route('/nutrition')

View File

@ -1,14 +1,13 @@
import csv import csv
import sqlite3 import psycopg2
# Pfad zur Ihrer CSV-Datei # Pfad zur Ihrer CSV-Datei
csv_file_path = 'nu.csv' csv_file_path = 'nu.csv'
# Pfad zur Ihrer SQLite-Datenbank # Pfad zur Ihrer SQLite-Datenbank
sqlite_db_path = 'nutrition.db'
# Verbindung zur SQLite-Datenbank herstellen # Verbindung zur SQLite-Datenbank herstellen
conn = sqlite3.connect(sqlite_db_path) conn = psycopg2.connect()
cursor = conn.cursor() cursor = conn.cursor()
# Erstellen der Tabelle (falls noch nicht vorhanden) # Erstellen der Tabelle (falls noch nicht vorhanden)
@ -29,7 +28,7 @@ with open(csv_file_path, newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile) reader = csv.reader(csvfile)
next(reader, None) # Überspringen der Kopfzeile next(reader, None) # Überspringen der Kopfzeile
for row in reader: for row in reader:
cursor.execute('INSERT INTO nutrition_table (name, kcal, EW, Fett, KH, BST, Ca) VALUES (?, ?, ?, ?, ?, ?, ?)', row) cursor.execute('INSERT INTO nutrition_table (name, kcal, EW, Fett, KH, BST, Ca) VALUES (%s, %s, %s, %s, %s, %s, %s)', row)
# Änderungen speichern und Verbindung schließen # Änderungen speichern und Verbindung schließen
conn.commit() conn.commit()