Тема: cтворення програмного проекта простої бази даних «Учні» з даними про прізвище, ім'я, успішність, забезпечення виведення даних про учнів за зазначиними критеріями.
Мета: навчити основам роботи з базами даних SQL з використанням мови програмування Python.
Учні повинні знати:
Учні повинні мати уявлення про можливості комплексу Python + MariaDB.
Учні повинні вміти:
Обладнання: комп'ютери зі встановленими ОС, Python, XAMPP.
Структура уроку
Примітка. Цей урок проводять лише після успішного опанування матеріалом уроків щодо вивчення SQL і виконання усіх його практичних завдань.
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку.
2. Актуалізація опорних знань
Дати відповідь на питання і порівняти з очікуваним.
3. Вивчення нового матеріалу
Під'єднання бази даних і здійснення запиту мовою SQL мовою Python за допомогою бібліотеки (Python3-)pymysql (її встановлюють за допомогою менеджера програм) може мати такий вигляд:
import pymysql # під'єднання бібліотеки pymysql c = pymysql.connect( # створення сполучення host = '127.0.0.1', # адреса локального сервера (localhost) user = 'root', # обліковий запис користувача базами даних passwd = '', # пароль до облікового запису користувача БД db = "school") # назва бази даних with c.cursor() as t: try: # початок блоку для пошуку виключення t.execute("SELECT * FROM pupils WHERE form = '11Б';") # виконати запит SQL r = t.fetchall() # повернення результату запиту for s in r: # виведення результату запиту у вигляді print(s) except: # дії у разі виключення - неможливості коректно виконати вказівку print("Щось негаразд!") finally: c.commit() # збереження дії з БД c.close() # закриття сполучення
Тут замість назв змінних c, r, s, t можуть бути довільні інші назви. Поданий вище код програми є змістовним прикладом для бази даних school, побудованої раніше у середовищі XAMPP, для якої він дає такий результат у консолі:
('ЛИСЕНКО', 'ДМИТРО', '11Б', '113') ('РУДЕНКО', 'ОЛЕГ', '11Б', '114') ('САВЧЕНКО', 'ВАЛЕРІЙ', '11Б', '115') ('ПЕТРЕНКО', 'ЛЕОНІД', '11Б', '116') ('ШУЛЬГА', 'ГАЛИНА', '11Б', '117') ('РАДЧЕНКО', 'ТЕТЯНА', '11Б', '118') ('КОРОЛЬ', 'НАДІЯ', '11Б', '119') ('ОСТАПЕНКО', 'ЛЮДМИЛА', '11Б', '120')
Для виведення значення окремого поля потрібно вказати його номер (нумерацію починають з нуля). Наприклад, якщо замінити у поданому вище коді вказівку print(s) на print(s[0]), то буде виведено лише прізвища — по одному в рядок без апострофів (лапок).
4. Інструктаж з ТБ
5. Закріплення вивченого матеріалу
На початку виконання завдань середовище XAMPP повинне бути активним і містити порожню базу даних school. При виконанні завдань використати демонстраційні розв'язання a, b, c завдань уроку 1 щодо SQL.
Завдання 1. Створити програму мовою Python, яка засобами SQL:
виконає запити створення структури й наповнення таблиць згідно з вказівками, записаними у файлах structure.txt і data.txt (результат перевіряють засобами phpMyAdmin);
виведе у консоль назви усіх наявних баз даних;
для усіх наявних таблиць бази даних school виведе у консоль назви цих таблиць і результати запиту щодо їхньої структури у вигляді асоціативного масиву (без опрацювання запиту).
Порівняти з очікуваними кодом і виведенням.
Завдання 2. Використовуючи попередньо апробований код SQL, створити програму мовою Python для виведення у консоль у вигляді асоціативних масивів таких даних:
всі поля з таблиці pupils про учнів 11Б класу (поле form);
всі поля з таблиці classroom про аудиторії корпусу A (поле building, латиниця), ємність яких (поле capacity) менше 24 і більше від 16 (2 варіанти);
з таблиці pupils про прізвище (поле sename) та ім'я (поле name) усіх тих записів, у яких прізвище закінчується на 'УК';
з таблиці pupils про прізвище (поле sename) та ім'я (поле name) усіх тих записів, у яких ім'я (поле name) 'Андрій' або 'Григорій';
з таблиці pupils про загальну кількість учнів;
з таблиці teachers про категорії (поле quality) та кількість учителів цієї категорії;
з таблиці teachers про категорії (поле quality) та кількість учителів цієї категорії, що перевищує 1;
з таблиці marks про прізвище (поле sename) й оцінку (поле mark) за день 2020-09-24 у порядку зростання оцінки;
з таблиці marks про прізвище (поле sename) й оцінку (поле mark) за день 2020-09-24 у порядку спадання оцінки;
з таблиці marks про прізвище (поле sename) й оцінку (поле mark) за день 2020-09-24 у порядку спадання оцінки лише тих, хто посів 4, 5 і 6 місце у цьому списку з підписами стовпчиків 'Прізвище' й 'Оцінка';
з таблиці courses список всіх дисциплін (поле course) і відповідну інформацію про кафедри з таблиці department у режимах;
Виконати запити й порівняти з очікуваними кодом мовою Python і результатом.
Завдання 3. Використовуючи попередньо апробований код SQL, створити програму мовою Python для такого:
створити віртуальну таблицю own_view усіх полів усіх записів таблиці marks, у яких оцінка (поле mark) менша ніж 7;
вивести у консоль у вигляді асоціативних масивів даних own_view.
Виконати запити й порівняти з очікуваними кодом і результатом. Зауважте: незважаючи на виключення при створенні перегляду, дані виведено правильно.
Завдання 4. Використовуючи попередньо апробований код SQL, створити програму мовою Python для такого:
Виконати запити й порівняти з очікуваними кодом і результатом.
6. Підбиття підсумків уроку
Дати відповідь на питання і порівняти з очікуваним.
Виставлення оцінок.
7. Домашнє завдання
У разі потреби доробити завдання. Вивчити систаксис під'єднання бази даних і здійснення запиту мовою SQL з програми мовою Python. Написати програму мовою Python, яка:
Текст упорядкував Олександр Рудик.