# -*- coding: utf-8 -*- import sys, io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') import fdb conn = fdb.connect( dsn=r'localhost:c:\medicus 3\data\medicus.fdb', user='SYSDBA', password='masterkey', charset='win1250' ) cur = conn.cursor() print("=" * 60) print("1. Sloupce HPN") print("=" * 60) cur.execute(""" SELECT rf.RDB$FIELD_NAME FROM RDB$RELATION_FIELDS rf WHERE rf.RDB$RELATION_NAME = 'HPN' ORDER BY rf.RDB$FIELD_POSITION """) col_names = [r[0].strip() for r in cur.fetchall()] print(f" Sloupce: {col_names}") print() print("=" * 60) print("2. Počet záznamů a max datum") print("=" * 60) cur.execute("SELECT COUNT(*) FROM HPN") print(f" Celkem: {cur.fetchone()[0]} záznamů") # Najdi datumove sloupce date_candidates = [c for c in col_names if any(x in c for x in ['DAT', 'ODE', 'VYT', 'CAS'])] print(f" Datumové sloupce: {date_candidates}") for dc in date_candidates[:3]: try: cur.execute(f"SELECT MIN({dc}), MAX({dc}) FROM HPN") mn, mx = cur.fetchone() print(f" {dc}: {mn} .. {mx}") except Exception as e: print(f" {dc}: {e}") print() print("=" * 60) print("3. Posledních 20 záznamů (bez BLOBů)") print("=" * 60) # Zjisti BLOB sloupce cur.execute(""" SELECT rf.RDB$FIELD_NAME FROM RDB$RELATION_FIELDS rf JOIN RDB$FIELDS f ON f.RDB$FIELD_NAME = rf.RDB$FIELD_SOURCE WHERE rf.RDB$RELATION_NAME = 'HPN' AND f.RDB$FIELD_TYPE = 261 """) blob_cols = {r[0].strip() for r in cur.fetchall()} print(f" BLOB sloupce: {blob_cols}") safe_cols = [c for c in col_names if c not in blob_cols] # Zjisti razeni - zkus VYTVORENO nebo ODESLANO nebo ID order_col = next((c for c in ['VYTVORENO', 'ODESLANO', 'DATUM', 'ID'] if c in col_names), col_names[0]) cur.execute(f"SELECT FIRST 20 {', '.join(safe_cols)} FROM HPN ORDER BY {order_col} DESC") rows = cur.fetchall() for row in rows: d = dict(zip(safe_cols, row)) print(f" {d}") print() print("=" * 60) print("4. Záznamy od 2026-02-01") print("=" * 60) for dc in date_candidates[:2]: try: cur.execute(f"SELECT COUNT(*) FROM HPN WHERE {dc} >= '2026-02-01'") cnt = cur.fetchone()[0] if cnt > 0: print(f" {dc} >= 2026-02-01: {cnt} záznamů") cur.execute(f"SELECT FIRST 5 {', '.join(safe_cols)} FROM HPN WHERE {dc} >= '2026-02-01' ORDER BY {dc} DESC") for row in cur.fetchall(): print(f" {dict(zip(safe_cols, row))}") break except Exception as e: print(f" {dc}: {e}") print() print("=" * 60) print("5. HPN_NOTIFIKACE_DETAIL – sloupce a ukazka") print("=" * 60) cur.execute(""" SELECT rf.RDB$FIELD_NAME FROM RDB$RELATION_FIELDS rf WHERE rf.RDB$RELATION_NAME = 'HPN_NOTIFIKACE_DETAIL' ORDER BY rf.RDB$FIELD_POSITION """) hnd_cols = [r[0].strip() for r in cur.fetchall()] print(f" Sloupce: {hnd_cols}") cur.execute("SELECT COUNT(*) FROM HPN_NOTIFIKACE_DETAIL") print(f" Záznamy: {cur.fetchone()[0]}") conn.close() print("\nHotovo.")