Menu 1 4 5 ok + bugs
This commit is contained in:
+115
@@ -0,0 +1,115 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import csv
|
||||
import mysql.connector
|
||||
|
||||
# ==========================================
|
||||
# CONFIGURATION
|
||||
# ==========================================
|
||||
|
||||
CSV_FILE = "/app/isin.csv"
|
||||
|
||||
# Pays associé au fichier CSV
|
||||
PAYS = "France"
|
||||
|
||||
MYSQL = {
|
||||
"host": "db",
|
||||
"port": 3306,
|
||||
"user": "root",
|
||||
"password": "sysadm-1963",
|
||||
"database": "bourse"
|
||||
}
|
||||
|
||||
# ==========================================
|
||||
# CONNEXION MYSQL
|
||||
# ==========================================
|
||||
|
||||
try:
|
||||
db = mysql.connector.connect(**MYSQL)
|
||||
print("Connexion MySQL OK")
|
||||
except Exception as e:
|
||||
print("Erreur MySQL :", e)
|
||||
exit(1)
|
||||
|
||||
cursor = db.cursor(dictionary=True)
|
||||
|
||||
# ==========================================
|
||||
# CHARGEMENT DU CSV
|
||||
# ==========================================
|
||||
|
||||
print("Chargement du CSV...")
|
||||
|
||||
csv_data = {}
|
||||
|
||||
with open(CSV_FILE, newline="", encoding="utf-8-sig") as f:
|
||||
|
||||
reader = csv.reader(f, delimiter=";")
|
||||
|
||||
for row in reader:
|
||||
|
||||
if len(row) < 3:
|
||||
continue
|
||||
|
||||
isin = row[0].strip().upper()
|
||||
ticker = row[2].strip().upper()
|
||||
|
||||
if ticker:
|
||||
csv_data[(ticker, PAYS.upper())] = isin
|
||||
|
||||
print(f"{len(csv_data)} ISIN chargés.")
|
||||
|
||||
# ==========================================
|
||||
# LECTURE DE LA TABLE
|
||||
# ==========================================
|
||||
|
||||
cursor.execute("""
|
||||
SELECT
|
||||
id,
|
||||
ticker,
|
||||
pays,
|
||||
isin
|
||||
FROM les_actions
|
||||
""")
|
||||
|
||||
lignes = cursor.fetchall()
|
||||
|
||||
print(f"{len(lignes)} actions lues.")
|
||||
|
||||
# ==========================================
|
||||
# MISE A JOUR
|
||||
# ==========================================
|
||||
|
||||
sql_update = """
|
||||
UPDATE les_actions
|
||||
SET isin = %s
|
||||
WHERE id = %s
|
||||
"""
|
||||
|
||||
update_data = []
|
||||
|
||||
for ligne in lignes:
|
||||
|
||||
ticker = (ligne["ticker"] or "").strip().upper()
|
||||
pays = (ligne["pays"] or "").strip().upper()
|
||||
|
||||
cle = (ticker, pays)
|
||||
|
||||
if cle in csv_data:
|
||||
|
||||
update_data.append((
|
||||
csv_data[cle],
|
||||
ligne["id"]
|
||||
))
|
||||
|
||||
print(f"{len(update_data)} lignes à mettre à jour.")
|
||||
|
||||
if update_data:
|
||||
cursor.executemany(sql_update, update_data)
|
||||
db.commit()
|
||||
|
||||
print("===================================")
|
||||
print(f"{len(update_data)} ISIN mis à jour.")
|
||||
print("===================================")
|
||||
|
||||
cursor.close()
|
||||
db.close()
|
||||
Reference in New Issue
Block a user