Initial commit
This commit is contained in:
62
app.py
Normal file
62
app.py
Normal file
@@ -0,0 +1,62 @@
|
||||
from flask import Flask, render_template, request, jsonify
|
||||
import pandas as pd
|
||||
import os
|
||||
import logging
|
||||
import numpy as np
|
||||
|
||||
app = Flask(__name__)
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def clean_dataframe(df):
|
||||
"""Konvertiert NaN-Werte in None für JSON-Kompatibilität"""
|
||||
return df.replace({np.nan: None})
|
||||
|
||||
# CSV-Datei laden
|
||||
def load_data():
|
||||
try:
|
||||
logger.info("Versuche CSV-Datei zu laden...")
|
||||
if not os.path.exists('spezexpo.csv'):
|
||||
logger.error("CSV-Datei 'spezexpo.csv' nicht gefunden!")
|
||||
return None
|
||||
|
||||
df = pd.read_csv('spezexpo.csv', encoding='utf-8')
|
||||
df = clean_dataframe(df)
|
||||
logger.info(f"CSV-Datei erfolgreich geladen. {len(df)} Einträge gefunden.")
|
||||
return df
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler beim Laden der CSV-Datei: {str(e)}")
|
||||
return None
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
return render_template('index.html')
|
||||
|
||||
@app.route('/search')
|
||||
def search():
|
||||
try:
|
||||
query = request.args.get('q', '').lower()
|
||||
logger.info(f"Suche nach: {query}")
|
||||
|
||||
df = load_data()
|
||||
if df is None:
|
||||
return jsonify({"error": "Datenbank konnte nicht geladen werden"}), 500
|
||||
|
||||
# Suche über verschiedene Felder
|
||||
mask = (
|
||||
df['Vorname'].str.lower().str.contains(query, na=False) |
|
||||
df['Nachname'].str.lower().str.contains(query, na=False) |
|
||||
df['Fachrichtung'].str.lower().str.contains(query, na=False) |
|
||||
df['Ort'].str.lower().str.contains(query, na=False) |
|
||||
df['Nummer'].astype(str).str.contains(query, na=False) # Suche nach Kundennummer
|
||||
)
|
||||
|
||||
results = df[mask].to_dict('records')
|
||||
logger.info(f"{len(results)} Ergebnisse gefunden")
|
||||
return jsonify(results)
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler bei der Suche: {str(e)}")
|
||||
return jsonify({"error": str(e)}), 500
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
Reference in New Issue
Block a user