46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
"""
|
||
Průzkum Medicus databáze – výpis tabulek a jejich sloupců.
|
||
"""
|
||
import fdb
|
||
|
||
conn = fdb.connect(
|
||
dsn=r'localhost:c:\medicus 3\data\medicus.fdb',
|
||
user='SYSDBA',
|
||
password='masterkey',
|
||
charset='win1250'
|
||
)
|
||
|
||
cur = conn.cursor()
|
||
|
||
# Všechny uživatelské tabulky
|
||
cur.execute("""
|
||
SELECT rdb$relation_name
|
||
FROM rdb$relations
|
||
WHERE rdb$view_blr IS NULL
|
||
AND (rdb$system_flag IS NULL OR rdb$system_flag = 0)
|
||
ORDER BY rdb$relation_name
|
||
""")
|
||
tables = [row[0].strip() for row in cur.fetchall()]
|
||
|
||
print(f"Počet tabulek: {len(tables)}\n")
|
||
print("=== SEZNAM TABULEK ===")
|
||
for t in tables:
|
||
print(f" {t}")
|
||
|
||
print("\n=== SLOUPCE KAŽDÉ TABULKY ===")
|
||
for table in tables:
|
||
cur.execute("""
|
||
SELECT rf.rdb$field_name, f.rdb$field_type, f.rdb$field_length
|
||
FROM rdb$relation_fields rf
|
||
JOIN rdb$fields f ON rf.rdb$field_source = f.rdb$field_name
|
||
WHERE rf.rdb$relation_name = ?
|
||
ORDER BY rf.rdb$field_position
|
||
""", (table,))
|
||
cols = cur.fetchall()
|
||
col_names = [c[0].strip() for c in cols]
|
||
print(f"\n{table}")
|
||
print(" " + ", ".join(col_names))
|
||
|
||
cur.close()
|
||
conn.close()
|