File: //opt/af/src/components/database_query.py
import streamlit as st
import pandas as pd
from src.database.mysql_connector import MySQLConnector
def render_database_query():
"""
Rendert die Streamlit-Komponente für Datenbankabfragen.
"""
st.header("MySQL Datenbank-Abfragen")
# Erstelle eine Instanz des MySQL-Connectors
db = MySQLConnector()
# Verbindungsstatus anzeigen
if db.connect():
st.success("Verbindung zur Datenbank hergestellt")
else:
st.error("Fehler bei der Verbindung zur Datenbank")
return
# SQL-Abfrage-Eingabefeld
query = st.text_area("SQL-Abfrage eingeben:", height=150)
# Ausführen-Button
if st.button("Abfrage ausführen"):
if query:
with st.spinner("Abfrage wird ausgeführt..."):
# Führe die Abfrage aus
results = db.execute_query(query)
if results:
# Konvertiere die Ergebnisse in ein DataFrame
df = pd.DataFrame(results)
# Zeige die Ergebnisse an
st.dataframe(df)
# Zeige Statistiken an
st.subheader("Statistiken")
st.write(f"Anzahl der Zeilen: {len(df)}")
st.write(f"Anzahl der Spalten: {len(df.columns)}")
# Zeige Spalteninformationen an
st.subheader("Spalteninformationen")
st.write(df.dtypes)
else:
st.error("Keine Ergebnisse gefunden oder Fehler bei der Abfrage")
else:
st.warning("Bitte geben Sie eine SQL-Abfrage ein")
# Schließe die Datenbankverbindung
db.close()