51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Скрипт для загрузки вопросов из CSV файлов в базу данных
|
|
"""
|
|
import asyncio
|
|
import sys
|
|
import os
|
|
from pathlib import Path
|
|
|
|
# Добавляем путь к проекту
|
|
project_root = Path(__file__).parent
|
|
sys.path.append(str(project_root))
|
|
|
|
from config.config import config
|
|
from src.database.database import DatabaseManager
|
|
from src.services.csv_service import CSVQuizLoader
|
|
|
|
async def load_questions_to_db():
|
|
"""Загрузка вопросов из CSV файлов в базу данных"""
|
|
print("📚 Загрузка вопросов из CSV в базу данных...")
|
|
|
|
db = DatabaseManager(config.database_path)
|
|
csv_loader = CSVQuizLoader(config.csv_data_path)
|
|
|
|
# Получаем все тесты
|
|
tests = await db.get_tests_by_category()
|
|
|
|
for test in tests:
|
|
csv_file = test['csv_file']
|
|
test_id = test['id']
|
|
|
|
print(f" 📄 Загружаем {csv_file} для теста ID {test_id}")
|
|
|
|
# Загружаем вопросы из CSV
|
|
questions = await csv_loader.load_questions_from_csv(csv_file)
|
|
|
|
if questions:
|
|
# Добавляем вопросы в базу
|
|
success = await db.add_questions_to_test(test_id, questions)
|
|
if success:
|
|
print(f" ✅ Загружено {len(questions)} вопросов")
|
|
else:
|
|
print(f" ❌ Ошибка загрузки для теста {test_id}")
|
|
else:
|
|
print(f" ⚠️ Нет вопросов в файле {csv_file}")
|
|
|
|
print("✅ Загрузка завершена!")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(load_questions_to_db())
|