import requests import mysql.connector from mysql.connector import Error def insert_gas_price_data(): connection = None try: # 1. Gasdata ophalen url = "https://enever.nl/apiv3/gasprijs_vandaag.php?token=5a7d9b371fe147cfc8100bcf6d9ebd55" response = requests.get(url) if response.status_code != 200: raise Exception(f'Fout bij het ophalen van de gasdata. Status: {response.status_code}') data = response.json() if not data or 'data' not in data: raise Exception('Fout bij het decoderen van de JSON-data of lege respons.') # 2. Database verbinding connection = mysql.connector.connect( host='127.0.0.1', database='alfen', user='alfen_user', password='5uVgr%f%s2P5GR@3q!', port=3307 ) if connection.is_connected(): cursor = connection.cursor() # Gebruik VALUES(price) in de update voor een schonere query query = """ INSERT INTO gas_price_data (datetime, provider_code, price) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE price = VALUES(price) """ providers = { 'EGSI': 'prijsEGSI', 'EOD': 'prijsEOD', 'ANWB': 'prijsANWB', 'BE': 'prijsBE', 'EE': 'prijsEE', 'EN': 'prijsEN', 'EVO': 'prijsEVO', 'EZ': 'prijsEZ', 'FR': 'prijsFR', 'GSL': 'prijsGSL', 'MDE': 'prijsMDE', 'NE': 'prijsNE', 'PE': 'prijsPE', 'QU': 'prijsQU', 'SS': 'prijsSS', 'TI': 'prijsTI', 'VDB': 'prijsVDB', 'VON': 'prijsVON', 'VF': 'prijsVF', 'WE': 'prijsWE', 'ZP': 'prijsZP' } count = 0 for entry in data['data']: # FIX: Schoon de datum string op voor MySQL raw_dt = entry['datum'] clean_dt = raw_dt.replace('T', ' ').split('+')[0] for code, price_field in providers.items(): if price_field in entry and entry[price_field] is not None: price = entry[price_field] try: cursor.execute(query, (clean_dt, code, price)) count += 1 except Error as e: print(f"Fout bij klaarzetten gasdata voor {code} op {clean_dt}: {e}") # 3. Commit alle wijzigingen in een keer connection.commit() print(f"Succesvol {count} gasprijs-records verwerkt.") except Error as e: print(f"Fout bij databaseverbinding: {e}") except Exception as e: print(f"Algemene fout: {e}") finally: if connection is not None and connection.is_connected(): cursor.close() connection.close() print("Databaseverbinding gesloten.") if __name__ == "__main__": insert_gas_price_data()