62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
import streamlit as st
|
||
import pandas as pd
|
||
import mysql.connector
|
||
from datetime import datetime
|
||
from dotenv import load_dotenv
|
||
import os
|
||
|
||
# Charger les variables d'environnement (.env)
|
||
load_dotenv()
|
||
|
||
def get_connection(database_name):
|
||
return mysql.connector.connect(
|
||
host=os.getenv("54.36.188.119"),
|
||
user=os.getenv("michel"),
|
||
password=os.getenv("#SO2&1nf%mZ@jfh"),
|
||
database=database_name
|
||
)
|
||
|
||
# --- Interface utilisateur ---
|
||
st.title("📦 Tableau de bord - Inventaires multi-sites")
|
||
|
||
# Sélecteur de base (site)
|
||
sites = ["Roissy", "Meudon", "Saclay"] # ➕ tu peux en ajouter ici
|
||
site_selectionne = st.selectbox("Sélectionnez le site :", sites)
|
||
|
||
try:
|
||
conn = get_connection(site_selectionne)
|
||
cursor = conn.cursor(dictionary=True)
|
||
|
||
# Récupérer les mois disponibles
|
||
cursor.execute("SELECT DISTINCT DATE_FORMAT(Date, '%Y-%m') AS Mois FROM Inventaires ORDER BY Mois DESC")
|
||
mois_dispos = [row['Mois'] for row in cursor.fetchall()]
|
||
|
||
if not mois_dispos:
|
||
st.warning("Aucun inventaire trouvé pour ce site.")
|
||
else:
|
||
mois_choisi = st.selectbox("Choisissez un mois :", mois_dispos)
|
||
|
||
# Charger les données du mois
|
||
query = """
|
||
SELECT Id_Article, Quantité, Prix, Date
|
||
FROM Inventaires
|
||
WHERE DATE_FORMAT(Date, '%%Y-%%m') = %s
|
||
ORDER BY Id_Article
|
||
"""
|
||
cursor.execute(query, (mois_choisi,))
|
||
data = cursor.fetchall()
|
||
df = pd.DataFrame(data)
|
||
|
||
st.success(f"{len(df)} lignes trouvées pour {site_selectionne} - {mois_choisi}")
|
||
st.dataframe(df)
|
||
|
||
# Export CSV
|
||
csv = df.to_csv(index=False).encode('utf-8')
|
||
st.download_button("📥 Télécharger CSV", csv, f"Inventaire_{site_selectionne}_{mois_choisi}.csv", "text/csv")
|
||
|
||
cursor.close()
|
||
conn.close()
|
||
|
||
except Exception as e:
|
||
st.error(f"Erreur : {e}")
|