notebook vb
This commit is contained in:
70
MedicusWithClaude/db_query.py
Normal file
70
MedicusWithClaude/db_query.py
Normal file
@@ -0,0 +1,70 @@
|
||||
"""
|
||||
Pomocný skript pro Clauda – spusť na Windows: python db_query.py
|
||||
Výsledky zapíše do db_query_result.txt
|
||||
"""
|
||||
import fdb
|
||||
import json
|
||||
import sys
|
||||
|
||||
conn = fdb.connect(
|
||||
dsn=r'localhost:c:\medicus 3\data\medicus.fdb',
|
||||
user='SYSDBA',
|
||||
password='masterkey',
|
||||
charset='win1250'
|
||||
)
|
||||
cur = conn.cursor()
|
||||
|
||||
results = {}
|
||||
|
||||
# 1. Tabulky s klíčovými slovy (soubory, dokumenty)
|
||||
cur.execute("""
|
||||
SELECT RDB$RELATION_NAME
|
||||
FROM RDB$RELATIONS
|
||||
WHERE RDB$SYSTEM_FLAG = 0 AND RDB$VIEW_BLR IS NULL
|
||||
ORDER BY RDB$RELATION_NAME
|
||||
""")
|
||||
all_tables = [row[0].strip() for row in cur.fetchall()]
|
||||
|
||||
keywords = ['FILE', 'SOUB', 'DOC', 'SCAN', 'OBRAZ', 'IMG', 'ATTACH',
|
||||
'EXTERN', 'PRILOHA', 'ZPRAV', 'ARCH', 'PRIL', 'FOTO']
|
||||
matches = [t for t in all_tables if any(k in t.upper() for k in keywords)]
|
||||
results['tables_matching'] = matches
|
||||
results['total_tables'] = len(all_tables)
|
||||
|
||||
# 2. Podrobnosti o nalezených tabulkách (sloupce + počet řádků)
|
||||
table_details = {}
|
||||
for t in matches:
|
||||
try:
|
||||
cur.execute(f"SELECT COUNT(*) FROM {t}")
|
||||
count = cur.fetchone()[0]
|
||||
except:
|
||||
count = "error"
|
||||
|
||||
cur.execute("""
|
||||
SELECT r.RDB$FIELD_NAME, f.RDB$FIELD_TYPE, f.RDB$FIELD_LENGTH
|
||||
FROM RDB$RELATION_FIELDS r
|
||||
JOIN RDB$FIELDS f ON f.RDB$FIELD_NAME = r.RDB$FIELD_SOURCE
|
||||
WHERE r.RDB$RELATION_NAME = ?
|
||||
ORDER BY r.RDB$FIELD_POSITION
|
||||
""", (t,))
|
||||
cols = [(row[0].strip(), row[1], row[2]) for row in cur.fetchall()]
|
||||
table_details[t] = {"count": count, "columns": cols}
|
||||
|
||||
results['table_details'] = table_details
|
||||
|
||||
# 3. Uložit výsledky
|
||||
output = []
|
||||
output.append(f"=== VÝSLEDKY DB PRŮZKUMU ===\n")
|
||||
output.append(f"Celkem tabulek v DB: {results['total_tables']}\n")
|
||||
output.append(f"\nTabulky obsahující klíčová slova (soubory/dokumenty):\n")
|
||||
for t in results['tables_matching']:
|
||||
d = results['table_details'].get(t, {})
|
||||
output.append(f"\n ** {t} ** (řádků: {d.get('count', '?')})")
|
||||
for col in d.get('columns', []):
|
||||
output.append(f" - {col[0]} (type={col[1]}, len={col[2]})")
|
||||
|
||||
with open('db_query_result.txt', 'w', encoding='utf-8') as f:
|
||||
f.write('\n'.join(output))
|
||||
|
||||
print("Hotovo! Výsledky jsou v db_query_result.txt")
|
||||
conn.close()
|
||||
Reference in New Issue
Block a user