76 lines
2.4 KiB
Python
76 lines
2.4 KiB
Python
"""
|
||
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()
|