diff --git a/Inventaires.py b/Inventaires.py deleted file mode 100644 index 6f43cd9..0000000 --- a/Inventaires.py +++ /dev/null @@ -1,86 +0,0 @@ -# Insertion des tableaux excel dans les tables respectives(Meudon & Roissy). -import streamlit as st -import pandas as pd -import mysql.connector - -# 🔐 Identifiants MySQL -MYSQL_HOST = "54.36.188.119" -MYSQL_USER = "michel" -MYSQL_PASSWORD = "#SO2&1nf%mZ@jfh" - -# Connexion à la base MySQL -def get_connection(database_name): - return mysql.connector.connect( - host=MYSQL_HOST, - user=MYSQL_USER, - password=MYSQL_PASSWORD, - database=database_name - ) - -# Fonction d'insertion -def inserer_donnees(conn, data, date_choisie): - cursor = conn.cursor() - for _, row in data.iterrows(): - cursor.execute(""" - INSERT INTO Inventaire (Id_Article, Quantité, Prix, Date) - VALUES (%s, %s, %s, %s) - """, (row['Id_Article'], row['Quantité'], row['Prix'], date_choisie)) - conn.commit() - cursor.close() - -# Interface Streamlit -st.title("📦 Import Inventaire dans MySQL") - -uploaded_file = st.file_uploader("📥 Charger le fichier Excel (.xlsx)", type="xlsx") - -if uploaded_file: - try: - df = pd.read_excel(uploaded_file, sheet_name="Inventaire", usecols="C:E", header=1) - df.columns = ["Id_Article", "Prix", "Quantité"] - df = df[["Id_Article", "Quantité", "Prix"]] # Réorganisation - - # Nettoyage : retirer les lignes où Quantité est vide ou invalide - df = df.dropna(subset=["Quantité"]) - df = df[df["Quantité"].astype(str).str.strip() != ""] - df = df[pd.to_numeric(df["Quantité"], errors='coerce').notnull()] - - colonnes_attendues = ["Id_Article", "Quantité", "Prix"] - if all(col in df.columns for col in colonnes_attendues): - st.success("✅ Fichier reconnu") - st.dataframe(df) - # 🔍 Validation des types pour Quantité et Prix - try: - df["Quantité"] = df["Quantité"].astype(float).round(2) - df["Prix"] = df["Prix"].astype(float).round(2) - except ValueError as ve: - st.error("❌ Erreur : La colonne 'Quantité' ou 'Prix' contient une valeur non numérique.") - st.stop() - - # ✅ Optionnel : vérifier qu’aucune valeur n’est négative - if (df["Quantité"] < 0).any() or (df["Prix"] < 0).any(): - st.warning("⚠️ Certaines valeurs de 'Quantité' ou 'Prix' sont négatives.") - - date_choisie = st.date_input("🗓️ Choisir la date pour cet inventaire") - # Mapping affichage vers noms de base MySQL - base_mapping = { - "Roissy": "Roissy", - "Meudon": "Meudon" - } - - base_affichee = st.selectbox("📍 Choisir la base de destination", list(base_mapping.keys())) - nom_base_mysql = base_mapping[base_affichee] - - if st.button("✅ Insérer dans la base sélectionnée"): - try: - conn = get_connection(nom_base_mysql) - inserer_donnees(conn, df, date_choisie) - conn.close() - st.balloons() - st.success(f"✅ Insertion réussie dans {base_affichee}") - st.toast(f"{len(df)} lignes ajoutées pour la date {date_choisie}", icon="📦") - except Exception as e: - st.error(f"❌ Erreur lors de l'insertion : {e}") - else: - st.error(f"❌ Le fichier doit contenir les colonnes : {colonnes_attendues}") - except Exception as e: - st.error(f"❌ Erreur de lecture du fichier : {e}")