import psycopg2 # Verbindung zur Datenbank conn = psycopg2.connect( host='localhost', port=5432, database='buchhaltung', user='postgres', password='postgres' ) cur = conn.cursor() print('=== NEBENKOSTEN IMPORT ===\n') # Prüfe vorhandene Einträge cur.execute("SELECT COUNT(*) FROM nebenkosten WHERE jahr BETWEEN 2020 AND 2024") count = cur.fetchone()[0] print(f'Vorhandene Einträge 2020-2024: {count}') if count > 0: print('Lösche vorhandene Einträge...') cur.execute("DELETE FROM nebenkosten WHERE jahr BETWEEN 2020 AND 2024") conn.commit() print('Gelöscht.\n') # Alle Abrechnungen abrechnungen = [ (2020, 'Zingelstr. 14', 'Kevin Körger', 28.34, 16.73, None, 2.86, 7.23, 1.52), (2020, 'Zingelstr. 14', 'Johanna Krohn / Tobias Welling', 34.19, 16.73, None, 6.67, 7.23, 3.56), (2021, 'Zingelstr. 14', 'Kevin Körger', 471.91, 214.35, 75.29, 33.68, 130.64, 17.95), (2021, 'Zingelstr. 14', 'Johanna Krohn / Tobias Welling', 530.10, 203.70, 75.29, 78.59, 130.64, 41.89), (2022, 'Ahornweg 6', 'Kevin Körger', 487.72, 230.00, 52.73, 33.68, 153.36, 17.95), (2022, 'Ahornweg 6', 'Johanna Krohn / Tobias Welling', 556.56, 230.00, 52.73, 78.59, 153.36, 41.89), (2023, 'Ahornweg 6', 'Kevin Körger', 148.20, 63.47, 17.34, 11.07, 50.42, 5.90), (2023, 'Ahornweg 6', 'Johanna Krohn / Tobias Welling', 170.83, 63.47, 17.34, 25.84, 50.42, 13.77), (2023, 'Zingelstr. 14', 'Yvonne Brandt', 501.48, 129.58, 102.53, 75.36, 153.85, 40.17), (2024, 'Zingelstr. 14', 'Yvonne Brandt', 675.56, 115.41, 175.76, 112.27, 212.28, 59.84), ] query = """ INSERT INTO nebenkosten (jahr, wohnung, mieter, nebenkosten, versicherung, heizkosten, wasser, muell, sonstiges) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s) """ imported = 0 for data in abrechnungen: try: cur.execute(query, data) imported += 1 print(f'OK {data[2]} {data[0]}: {data[3]} EUR') except Exception as e: print(f'FEHLER bei {data[2]} {data[0]}: {e}') conn.commit() print(f'\n=== VERIFIZIERUNG ===') print(f'Importiert: {imported} von {len(abrechnungen)}') # Zeige alle Einträge cur.execute(""" SELECT jahr, mieter, wohnung, nebenkosten FROM nebenkosten WHERE jahr BETWEEN 2020 AND 2024 ORDER BY jahr, mieter """) print('\nAlle Einträge:') for row in cur.fetchall(): print(f' {row[0]}: {row[1]} ({row[2]}) - {row[3]} €') # Summen pro Jahr cur.execute(""" SELECT jahr, COUNT(*), SUM(nebenkosten) FROM nebenkosten WHERE jahr BETWEEN 2020 AND 2024 GROUP BY jahr ORDER BY jahr """) print('\nSummen pro Jahr:') for row in cur.fetchall(): print(f' {row[0]}: {row[1]} Abrechnungen, {row[2]:.2f} €') cur.close() conn.close() print('\n✅ IMPORT ABGESCHLOSSEN')