Shanraq.org Shanraq.org
1.2 шығарылымы: SQLite қолданатын көмекші
Қоғам

Информатика: өз цифрлық көмекшімізді жасаймыз 54-сабақ (барлығы 72)

1.2 шығарылымы: SQLite қолданатын көмекші

1.2 көмекшісін шығарамыз: дерек SQLite ішінде, бұрынғы еске салу мен жергілікті веб-бет сақталады.

Картадағы орнымыз

72 сабақтың 54-сі, «Деректер, кестелер және дерекқорлар» блогы (47–54). Үш ойдан алынған тапсырмасы бар 1.1 көмекшісін жалғастырамыз. Блок соңында жазбалар жергілікті SQLite ішінде сақталып, тексерілген еске салу ережелері өзгермейді.

1.2 шығарылымы: SQLite қолданатын көмекші

Жағдай және сұрақ

Сыныптас: «Тапсырмалар дерекқорға көшті, бұрынғы еске салу ережелері қалды ма?» деп сұрайды. Оны уәдемен емес, үш жазбаны, бес ықтимал күйді және браузер бетін салыстырып тексереміз.

Жаңа сөздерді анық түсінейік

Көшіру деректі ескі пішімнен жаңасына анық ережемен ауыстырады. Транзакция өзгерістерді біріктіреді: қате болса, жиын дайын деп саналмайды. Бақылау нүктесі — код, бастапқы файлдар, құру пәрмені және тексерілетін нәтиже. Тек оқу бетті ашу БД файлын өзгертпейтінін білдіреді. SQLite тапсырма мен сабақтарды өз компьютеріңіздегі бір файлда сақтайды; бұл бұлт емес, сайттың барлық қонағына ортақ база да емес.

Сабақтың тірек сигналы

Сызбаны солдан оңға оқыңыз. Әр жебенің кірісін, өзгерісін және тексеруін айтыңыз. Үшінші қадамды жауып, нәтижесін болжаңыз. Содан соң CSV, SQL не есептегі тиісті жолды табыңыз: сурет нақты сан мен байланысты алмастырмауы керек.

Қадамдап талдаймыз

step-05 ішінде python3 data_assistant.py init, кейін python3 data_assistant.py report орындаңыз: t-01 45, t-02 0, t-03 25 шығуы тиіс. python3 web_assistant.py --port 8765 іске қосып, 2026-10-09 күнін ашыңыз. Күйлер REMIND, DONE, NO_DATE болып қалады; ru, kz, en тек интерфейсті өзгертеді. tasks.json ішіндегі үш жолды БД-дан оқылғанымен салыстырыңыз. Тесттерді іске қосыңыз. init қайта орындалса, бар базаны алмастырмай тоқтауы тиіс.

Болжаңыз және тексеріңіз

Алдымен жол ретіне дейін нақты күтілетін нәтижені жазыңыз. Кодты step-05 бумасынан орындап, таңба бойынша салыстырыңыз. Бір кірісті өзгертіп, «болжау — іске қосу — түсіндіру» айналымын қайталаңыз. Мысал тек көрсетілген ережені дәлелдейді; ойдан алынған деректі нақты адамдар өлшеміне айналдырмайды.

from pathlib import Path
from tempfile import TemporaryDirectory
from datetime import date
from data_store import create_database, load_document_from_db
from assistant_core import reminder_status
with TemporaryDirectory() as folder:
    db = Path(folder) / "test.db"
    create_database(db, "tasks.json", "study_sessions.csv")
    for task in load_document_from_db(db)["tasks"]:
        print(task["id"], reminder_status(task, date(2026, 10, 9)))

Күтілетін нәтиже

t-01 REMIND
t-02 DONE
t-03 NO_DATE

Қатені табыңыз

Оқу файлына шын оқушылардың дерегін жазуға немесе http.server серверін ашық интернетке шығаруға болмайды. SQLite авторизацияны, сақтық көшірмені, қолжетімділік құқығын және бөтен сұраудан қорғануды өздігінен жасамайды. GET кезінде БД өзгермеуі бүкіл болашақ жүйе қауіпсіз деген дәлел емес.

Жобаға енгізілетін өзгеріс

step-05 ішінде өзгермеген 1.0 ядросын, ойдан алынған JSON мен CSV файлын, SQLite сұлбасын, тек оқитын веб-нұсқаны және тесттерді сақтаңыз. assistant.db оқушыда жергілікті жасалады, Git-ке жіберілмейді. Келесі блокта қауіп пен қалпына келтіруді бөлек оқимыз.

Тапсырма және дәлел

Үш күйді және 45/0/25 есебін көрсетіңіз. t-02 нөлін, қате күн мен қайталанған импорттың неліктен қабылданбайтынын түсіндіріңіз. Меңгеру үшін он сұрақтың сегізіне жауап беріп, досыңызға бет ашуды нұсқау бойынша өз бетімен орындатыңыз.

Өзін тексеруге арналған он сұрақ

  1. Бақылау естелік бойынша қорытындыдан несімен өзгеше?
  2. Бос ұзақтық пен нөл минутты қалай ажыратасыз?
  3. Төрт жазба қосындысы неге 60 емес, 70?
  4. Тазалау алдында бастапқы CSV не үшін сақталады?
  5. Қай кілт сабақтың қайталануына, қайсысы белгісіз тапсырмаға сілтемеге жол бермейді?
  6. SQLite байланыста сыртқы кілт тексеруін неге бөлек қосуды талап етеді?
  7. Бос іріктемедегі COUNT(*) пен SUM(minutes) айырмасы қандай?
  8. Неге LEFT JOIN t-02 сақтап, INNER JOIN жоғалтады?
  9. Қандай үш тексеру диаграмманы адал етеді?
  10. 1.2 көшіруден кейін не сақталды және жергілікті серверді неге көпшілікке ашуға болмайды?

Жаңа жағдайға көшіру

Мектеп бұл көмекшіні әр үйдегі отбасыларға ұсынғысы келеді. Жергілікті SQLite пен оқу HTTP-серверін ортақ серверге көшіруден бұрын не өзгеруі тиіс? Кемінде қолжетімділікті, дерек қорғанысын және сақтық көшірмеден қалпына келтіруді атаңыз.

1, 7 және 30 күннен кейін қайталау

1 күннен кейін сызбаны жатқа салып, қарапайым ұқсастық жұмыс істемейтін жағдайды атаңыз. 7 күннен кейін жаңа кестені мәтінсіз досыңызға түсіндіріп, соңғы сабақтағы он сұрақтың кемінде жетеуіне жауап беріңіз. 30 күннен кейін уақытша бумаға импорт жасап, үш тапсырма, төрт сабақ, 70 минут және өзгермеген еске салуды тексеріңіз. Түсініксіз терминді жазып, алғашқы анықтамасына оралыңыз.

Тексеруге арналған бастапқы құжат

Ресми құжаттама

Курстың барлық сабақтары

Барлық сабақтар

Мәтінде қате не теру қатесі кездессе, бізге айтыңыз

Жоба дәлелін тексеру

Бақылауды, түсіндіруді, қатені түзетуді және жобаңыздағы өзгерісті жазыңыз. Модель алғашқы шатасқан немесе дәлелденбеген байланысты көрсетеді, бірақ дайын жауапты бермейді.

Тексеру үшін кіру керек. Кіру

Пікірлер (0)

Әзірге пікір жоқ. Бірінші болыңыз.