54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
"""Test připojení k externí DB a prozkoumání její struktury - spusť na Windows"""
|
|
import fdb, os, glob
|
|
|
|
# Najde první existující externí FDB soubor
|
|
soubory = glob.glob(r'u:\MEDICUS_FILES_*.fdb')
|
|
if not soubory:
|
|
soubory = glob.glob(r'u:\externi\MEDICUS_FILES_*.fdb')
|
|
|
|
if not soubory:
|
|
print("Žádné externí FDB soubory nenalezeny!")
|
|
exit()
|
|
|
|
soubor = sorted(soubory)[-1] # vezme nejnovější
|
|
print(f"Zkouším: {soubor}")
|
|
|
|
# Test 1: masterkey
|
|
try:
|
|
conn = fdb.connect(dsn=f'localhost:{soubor}', user='SYSDBA', password='masterkey', charset='win1250')
|
|
print("✓ Připojení s masterkey FUNGUJE!")
|
|
|
|
cur = conn.cursor()
|
|
|
|
# Jaké tabulky jsou v externí DB?
|
|
cur.execute("SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG=0 AND RDB$VIEW_BLR IS NULL")
|
|
tabulky = [r[0].strip() for r in cur.fetchall()]
|
|
print(f"Tabulky v externí DB: {tabulky}")
|
|
|
|
# Kolik záznamů v FILES?
|
|
if 'FILES' in tabulky:
|
|
cur.execute("SELECT COUNT(*), MIN(ID), MAX(ID) FROM FILES")
|
|
row = cur.fetchone()
|
|
print(f"FILES: {row[0]} záznamů, ID od {row[1]} do {row[2]}")
|
|
|
|
cur.execute("SELECT ID, IDPAC, FILENAME, DATUM, OCTET_LENGTH(BODY) FROM FILES ORDER BY ID ROWS 3")
|
|
for r in cur.fetchall():
|
|
print(f" ID={r[0]} IDPAC={r[1]} FILE={r[2]} DATUM={r[3]} BODY={r[4]}B")
|
|
|
|
# Zjistit generátor
|
|
cur.execute("SELECT RDB$GENERATOR_NAME, RDB$GENERATOR_ID FROM RDB$GENERATORS WHERE RDB$SYSTEM_FLAG=0")
|
|
for r in cur.fetchall():
|
|
print(f"Generátor: {r[0].strip()} = {r[1]}")
|
|
|
|
conn.close()
|
|
except Exception as e:
|
|
print(f"✗ masterkey NEFUNGUJE: {e}")
|
|
|
|
# Test s jiným heslem - zkus prázdné
|
|
try:
|
|
conn = fdb.connect(dsn=f'localhost:{soubor}', user='SYSDBA', password='', charset='win1250')
|
|
print("✓ Připojení s prázdným heslem FUNGUJE!")
|
|
conn.close()
|
|
except Exception as e2:
|
|
print(f"✗ Prázdné heslo také nefunguje: {e2}")
|