Files
medevio/Testy/19 Test download at once.py
2025-11-16 11:26:04 +01:00

103 lines
2.4 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pymysql
from pathlib import Path
import os
import re
# ==============================
# ⚙️ CONFIGURATION
# ==============================
DB_CONFIG = {
"host": "192.168.1.76",
"port": 3307,
"user": "root",
"password": "Vlado9674+",
"database": "medevio",
"charset": "utf8mb4",
}
OUTPUT = Path(r"u:\Dropbox\Ordinace\Dokumentace_ke_zpracování\ALL_BLOBS")
OUTPUT.mkdir(exist_ok=True)
def sanitize(name: str) -> str:
return re.sub(r'[<>:"/\\|?*\x00-\x1F]', "_", name).strip()
# ==============================
# 📥 LOAD EVERYTHING IN ONE QUERY
# ==============================
def load_all_files():
conn = pymysql.connect(**DB_CONFIG)
cur = conn.cursor(pymysql.cursors.DictCursor)
print("📥 Loading ALL medevio_downloads including BLOBs… (can take a few seconds)")
cur.execute("""
SELECT
d.id AS download_id,
d.request_id,
d.attachment_id,
d.filename,
d.content_type,
d.file_size,
d.created_at,
p.pacient_jmeno,
p.pacient_prijmeni,
d.file_content
FROM medevio_downloads d
JOIN pozadavky p ON d.request_id = p.id
ORDER BY d.created_at
""")
rows = cur.fetchall()
conn.close()
print(f"📦 Loaded {len(rows)} BLOB records.")
return rows
# ==============================
# 💾 SAVE ALL TO FILESYSTEM
# ==============================
def save_all(rows):
saved = 0
for r in rows:
req_id = r["request_id"]
jmeno = sanitize(r["pacient_jmeno"] or "")
prijmeni = sanitize(r["pacient_prijmeni"] or "")
filename = sanitize(r["filename"] or f"{r['download_id']}.bin")
# Folder for each request
folder = OUTPUT / f"{prijmeni}, {jmeno} {req_id}"
folder.mkdir(exist_ok=True)
dest = folder / filename
# Skip existing
if dest.exists():
continue
data = r["file_content"]
if not data:
continue
with open(dest, "wb") as f:
f.write(data)
print(f"💾 Saved {dest}")
saved += 1
print(f"\n🎯 Done — {saved} files saved.")
# ==============================
# MAIN
# ==============================
if __name__ == "__main__":
rows = load_all_files() # ONE query
save_all(rows) # then write to disk