Suppression du fichier obsolète ancien_script.py
This commit is contained in:
@@ -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}")
|
|
||||||
Reference in New Issue
Block a user