uncommited changes
This commit is contained in:
69
backend/migrate_data.py
Normal file
69
backend/migrate_data.py
Normal file
@@ -0,0 +1,69 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user