70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
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()
|