import sys from sqlalchemy import create_engine, text from sqlalchemy.orm import sessionmaker from backend.database import SessionLocal as NewSession from backend import models OLD_DB_URL = "sqlite:///./backend/old_app.db" old_engine = create_engine(OLD_DB_URL, connect_args={"check_same_thread": False}) OldSession = sessionmaker(bind=old_engine) old_db = OldSession() new_db = NewSession() def log(msg: str): print(f"[INFO] {msg}", file=sys.stderr) def migrate(): log("Запуск переноса данных из old_app.db → app.db") # Тип оборудования по умолчанию log("Добавление типа оборудования по умолчанию: 'Неизвестно'") default_type = models.EquipmentType(name="Неизвестно") new_db.add(default_type) new_db.commit() # Перенос аудиторий log("Перенос аудиторий...") auditory_map = {} aud_rows = old_db.execute(text("SELECT id, audnazvanie FROM auditory")).fetchall() for aud in aud_rows: new_aud = models.Auditory(audnazvanie=aud.audnazvanie) new_db.add(new_aud) new_db.flush() auditory_map[aud.id] = new_aud.id log(f" → перенесено: {len(aud_rows)}") # Перенос оборудования log("Перенос оборудования...") ob_rows = old_db.execute(text("SELECT * FROM oboruds")).fetchall() for ob in ob_rows: new_ob = models.Oboruds( invNumber=ob.invNumber, nazvanie=ob.nazvanie, raspologenie=ob.raspologenie, numberppasu=ob.numberppasu, kolichestvo=ob.kolichestvo, aud_id=auditory_map.get(ob.aud_id), type_id=default_type.id ) new_db.add(new_ob) log(f" → перенесено: {len(ob_rows)}") # Перенос заметок log("Перенос заметок...") z_rows = old_db.execute(text("SELECT * FROM zametki")).fetchall() for z in z_rows: new_z = models.Zametki( txtzam=z.txtzam, created_date=z.created_date, rmdt=z.rmdt ) new_db.add(new_z) log(f" → перенесено: {len(z_rows)}") new_db.commit() log("✅ Перенос завершён успешно.") if __name__ == "__main__": migrate()