""" Загрузка предложений по уровням (A1, A2, B1). Каждый уровень загружается из отдельного CSV файла. Нумерация предложений начинается с 1 для каждого уровня. """ import asyncio import asyncpg import csv from config import DB_CONFIG def load_sentences_from_csv(filename): """Загружает предложения из CSV файла (формат: polish,english,russian,ukrainian).""" sentences = [] with open(filename, 'r', encoding='utf-8') as f: reader = csv.DictReader(f) for row in reader: sentences.append({ "sentence_pl": row["polish"].strip(), "translation_ru": row.get("russian", ""), "translation_uk": row.get("ukrainian", ""), "translation_en": row.get("english", ""), }) return sentences async def main(): conn = await asyncpg.connect(**DB_CONFIG) level_files = [ ("A1", "sentences_a1.csv"), ("A2", "sentences_a2.csv"), ("B1", "sentences_b1.csv"), ] total_added = 0 for level, filename in level_files: print(f"\n{'='*50}") print(f"Загружаю предложения уровня {level} из {filename}") print(f"{'='*50}") sentences = load_sentences_from_csv(filename) # Удаляем старые предложения этого уровня await conn.execute("DELETE FROM sentences WHERE level = $1", level) # Нумерация начинается с 1 для каждого уровня max_num = 0 added = 0 for s in sentences: max_num += 1 words_count = len(s["sentence_pl"].split()) difficulty = 1 if words_count <= 4 else 2 if words_count <= 6 else 3 await conn.execute( """INSERT INTO sentences (sentence_number, sentence_pl, translation_ru, translation_uk, translation_en, difficulty, level) VALUES ($1, $2, $3, $4, $5, $6, $7)""", max_num, s["sentence_pl"], s["translation_ru"], s["translation_uk"], s["translation_en"], difficulty, level ) added += 1 print(f"✅ {level} #{max_num}: {s['sentence_pl'][:60]}...") total_added += added print(f"Добавлено {added} предложений уровня {level}") await conn.close() print(f"\n🎉 Готово! Всего добавлено {total_added} предложений") if __name__ == "__main__": asyncio.run(main())