""" Podrobný průzkum FILES a EXTERNI_DB – spusť na Windows: python db_query2.py """ import fdb conn = fdb.connect( dsn=r'localhost:c:\medicus 3\data\medicus.fdb', user='SYSDBA', password='masterkey', charset='win1250' ) cur = conn.cursor() out = [] # 1. Obsah EXTERNI_DB out.append("=== EXTERNI_DB (konfigurace externích databází) ===") cur.execute("SELECT DBNAME, PATH, SERVER, HESLO FROM EXTERNI_DB") for row in cur.fetchall(): out.append(f" DBNAME={row[0]} PATH={row[1]} SERVER={row[2]} HESLO={row[3]}") # 2. FILES – přehled po rocích out.append("\n=== FILES – počty záznamů po rocích ===") cur.execute(""" SELECT EXTRACT(YEAR FROM DATUM) as ROK, COUNT(*) as POCET, SUM(OCTET_LENGTH(BODY)) as CELKEM_BYTU FROM FILES GROUP BY EXTRACT(YEAR FROM DATUM) ORDER BY ROK """) total_bytes = 0 for row in cur.fetchall(): rok, pocet, bytu = row mb = (bytu or 0) / 1024 / 1024 total_bytes += (bytu or 0) out.append(f" Rok {int(rok) if rok else '?'}: {pocet} souborů, {mb:.1f} MB") out.append(f" CELKEM: {total_bytes/1024/1024:.1f} MB v BLOB datech FILES") # 3. FILES – ukázka typů souborů out.append("\n=== FILES – typy souborů (dle přípony FILENAME) ===") cur.execute(""" SELECT LOWER(SUBSTRING(FILENAME FROM CHAR_LENGTH(FILENAME) - 3)) as EXT, COUNT(*) as POCET FROM FILES WHERE FILENAME IS NOT NULL GROUP BY 1 ORDER BY 2 DESC """) for row in cur.fetchall(): out.append(f" {row[0]} : {row[1]} souborů") # 4. FILES – ukázka prvních 5 záznamů (bez BODY) out.append("\n=== FILES – ukázka 5 záznamů (bez binárních dat) ===") cur.execute(""" SELECT ID, IDPAC, FILENAME, DATUM, OCTET_LENGTH(BODY) as VELIKOST, POZNAMKA, IDDOCTYP FROM FILES ORDER BY DATUM DESC ROWS 5 """) for row in cur.fetchall(): out.append(f" ID={row[0]} IDPAC={row[1]} soubor={row[2]} datum={row[3]}" f" velikost={row[4]}B pozn={row[5]} typ={row[6]}") # 5. DOCTYP – typy dokumentů out.append("\n=== DOCTYP – číselník typů dokumentů ===") cur.execute("SELECT ID, NAZEV, SYSID FROM DOCTYP ORDER BY ID") for row in cur.fetchall(): out.append(f" ID={row[0]} nazev={row[1]} sysid={row[2]}") result = '\n'.join(out) print(result) with open('db_query2_result.txt', 'w', encoding='utf-8') as f: f.write(result) print("\nUloženo do db_query2_result.txt") conn.close()