Similar presentations:
Python. ЛР 4. Python и MySQL (1)
1. Кафедра инфокоммуникационных технологий (ИКТ) Сетевые приложения на языке программирования Python Лабораторная работа №4
Взаимодействие ПО на Python и СУБД MySQL.Стучилин Владимир Валерьевич
доцент каф. ИКТ, к.т.н.
stuchilin.vv@misis.ru
2. БД. Используемое программное обеспечение.
misis.ruБД. Используемое программное обеспечение.
Система управления базами данных (СУБД): MySQL (MariaDB)
Графический администратор СУБД: phpMyAdmin
Веб сервер (необходим для phpMyAdmin): Apache
Установочный пакет XAMPP
XAMPP полностью бесплатный и простой в установке дистрибутив Apache,
содержащий MariaDB (MySQL), phpMyAdmin и др.
https://www.apachefriends.org/ru/index.html
Стучилин Владимир Валерьевич, каф. ИКТ
2
3. XAMPP
Стучилин Владимир Валерьевич, каф. ИКТmisis.ru
3
4. XAMPP
Стучилин Владимир Валерьевич, каф. ИКТmisis.ru
4
5. XAMPP
misis.ruC://xampp/xamp-control.exe
Стучилин Владимир Валерьевич, каф. ИКТ
5
6. phpMyAdmin
Университет науки и технологий МИСИСmisis.ru
6
7. Создание БД
misis.ru1. Создать БД (задается имя БД и кодировка utf8_general_ci)
2. Создать таблицу в БД (задается имя таблицы и количество
столбцов)
3. Задать обязательные свойства столбцов и кодировку таблицы.
- имя столбца;
- тип столбца (int – целое число, varchar – набор символов, нужно
указать максимальную длину)
- Установить первичный ключ (PRIMARY в разделе Индекс).
Ключевой столбец содержит уникальные значения для каждой
строки. Часто это отдельный столбец с порядковым номером)
- Установить у ключевого столбца свойство A_I (Autoicrement –
Автозаполнение)
- Установить кодировку utf8_general_ci в разделе «Сравнение».
Стучилин Владимир Валерьевич, каф. ИКТ
7
8. Создание БД
Университет науки и технологий МИСИСmisis.ru
8
9. Запросы SQL для манипуляции данными
misis.ruЯзык манипуляции данными (Data Manipulation Language, DML):
SELECT выбирает данные, удовлетворяющие заданным условиям,
INSERT добавляет новые данные,
UPDATE изменяет существующие данные,
DELETE удаляет данные.
SELECT список_столбцов FROM имя_таблицы WHERE [WHERE условие]
SELECT `name`, `tel` FROM `customer` WHERE `id`>2
INSERT INTO имя_таблицы [(список_столбцов)] VALUES (значение1, значение2, ... значениеN)
INSERT INTO `customer`(`id`, `name`, `tel`) VALUES (NULL, 'Иванов И.И.','89161234567')
UPDATE имя_таблицы SET столбец1 = значение1, столбец2 = значение2, ... столбецN = значениеN
[WHERE условие_обновления]
UPDATE `customer` SET `name`='Сидоров С.С.',`tel`='84951112233' WHERE `id`=1
DELETE FROM имя_таблицы [WHERE условие_удаления]
DELETE FROM `customer` WHERE `id`>3
Стучилин Владимир Валерьевич, каф. ИКТ
9
10. Python и MySQL. Подключение к СУБД.
misis.ruPython и MySQL. Подключение к СУБД.
PyMySQL представляет собой уникальную для Python клиентскую библиотеку,
основанную на PEP 249 (Python Database API Specification v2.0). Большая часть
общедоступных API совместимы с mysqlclient и MySQLdb. PyMySQL работает с MySQL
5.5+ и MariaDB 5.5+.
Для использования в программе PyMySQL необходимо установить в IDE (в нашем
случае в Visual Studio) и импортировать в коде.
import pymysql
#Импорт библиотеки PyMySQL
Затем необходимо подключиться к серверу БД (MySQL).
con = pymysql.connect(host='localhost', user='root', password='', database='bd1')
Стучилин Владимир Валерьевич, каф. ИКТ
10
11. Python и MySQL. Установка PyMySQL
misis.ruPython и MySQL. Установка PyMySQL
Для установки библиотеки PyMySQL в Visual Studio необходимо в открытом проекте
зайти в «Окружение Python». Для этого шелкнуть правой кнопкой мыши на
«Окружение Python» в обозревателе решений и в меню выбрать «Просмотреть все
окружение Python». Выбрать «Пакеты PyPl» и в строке поиска написать «PyMySQL» и
выбрать команду «pip install PyMySQL». Внимание, могут потребоваться права
Администратора.
Стучилин Владимир Валерьевич, каф. ИКТ
11
12. Проверка версии СУБД.
misis.ruПроверка версии СУБД.
import pymysql
#Импорт библиотеки PyMySQL
# Подключение к СУБД и выбор БД
con = pymysql.connect(host='localhost', user='root', password='', database='bd1')
with con:
cur = con.cursor()
cur.execute("SELECT VERSION()")
version = cur.fetchone()
print("Database version: {}".format(version[0]))
Стучилин Владимир Валерьевич, каф. ИКТ
12
13. Вставка, изменение, удаление записей
misis.ruВставка, изменение, удаление записей
import pymysql
#Импорт библиотеки PyMySQL
# Подключение к СУБД и выбор БД
con = pymysql.connect(host='localhost', user='root', password='', database='bd1')
# Запись в БД (изменение, удаление)
with con:
cur = con.cursor()
# Create a new record
query_insert = "INSERT INTO sotr (fio, tel) VALUES ('Сидоров С.С.', '+71112223344')"
query_update = "UPDATE sotr SET fio = 'Степанов С.С.' , tel = '+4956667788' WHERE fio =
'Сидоров С.С.'"
query_delete = "DELETE FROM sotr WHERE id = 19"
cur.execute(query_delete)
con.commit()
Стучилин Владимир Валерьевич, каф. ИКТ
13
14. Чтение записей
import pymysqlmisis.ru
#Импорт библиотеки PyMySQL
# Подключение к СУБД и выбор БД
con = pymysql.connect(host='localhost', user='root', password='', database='bd1')
with con:
cur = con.cursor()
cur.execute("SELECT * FROM sotr")
rows = cur.fetchall()
for row in rows:
print("{0} {1} {2} {3}".format(row[0], row[1], row[2], row[3]))
Стучилин Владимир Валерьевич, каф. ИКТ
14
15. Чтение записей. Метод fetchall
misis.ruВозвращает кортеж кортежей. Каждый внутренний кортеж – одна
строка (разделенная на столбцы) ответа на запрос SELECT.
SELECT * FROM fond
0
1
2
А
Б
В
1000
900
500
rows = cur.fetchall()
rows = ( (0, А, 1000), (1, Б, 900), (2, В, 500) )
rows[0][2] = 1000
rows[2][1] = В
Стучилин Владимир Валерьевич, каф. ИКТ
15
16. Даталогическая модель БД для практической работы
misis.ruДаталогическая модель БД для практической работы
Аудиторный фонд
Тип аудиторий
ID
(PK)
Код
типа
(PK)
Имя
типа
Корпус
Кол.
Ауд.
ID_F
(FK)
Аудитории
Код
типа
(FK)
П.номер
Стучилин Владимир Валерьевич, каф. ИКТ
Кол.
комп
Нал.
виде
о
Вместимость
ID
(PK)
16
17. Физическая модель БД для практической работы
misis.ruФизическая модель БД для практической работы
Стучилин Владимир Валерьевич, каф. ИКТ
17
18. Задание лабораторной работы
misis.ruЗадание лабораторной работы
1.Заполнить таблицу типов аудиторий (не менее 5).
2.Заполнить таблицу корпусов (не менее 5).
3.Заполнить таблицу аудиторий (не менее 100). Параметры аудиторий задаются случайным
образом.
1.Вывести список всех корпусов, отсортированных по алфавиту (по букве корпуса).
2.Вывести список всех типов аудиторий, отсортированных по коду в обратном порядке.
3.Вывести список всех аудиторий, отсортированных по номеру аудитории (первые пять).
4.Вывести количество аудиторий.
5.Вывести список уникальных вместимостей аудиторий, отсортированных по возрастанию.
6.Вывести номер аудитории с минимальной вместимостью.
7.Вывести информацию об аудитории, указанной пользователем.
Стучилин Владимир Валерьевич, каф. ИКТ
18
19. Пример программного кода на Python
misis.ruПример программного кода на Python
import pymysql
import random
#Импорт библиотеки PyMySQL
# Подключение к СУБД и выбор БД
con = pymysql.connect(host='localhost', user='root', password='', database='test1')
with con:
cur = con.cursor()
print('Очищаем все таблицы')
cur.execute("DELETE FROM aud WHERE 1")
con.commit()
cur.execute("DELETE FROM type WHERE 1")
con.commit()
cur.execute("DELETE FROM fond WHERE 1")
con.commit()
print()
print('Заполняем таблицу fond (корпуса)')
Стучилин
Владимир
Валерьевич,
каф. ИКТ
name
= ('Г', 'Л',
'В', 'Б', 'А')
19
20. Содержание отчета
misis.ru1. Титульный лист.
2. Цель работы.
3. Задание на лабораторную работу.
4. Теоретическая часть (опционально).
5. Структура БД.
6. Структура таблиц БД.
7. Программный код.
8. Пример выполнения (скриншоты).
9. Вывод.
Стучилин Владимир Валерьевич, каф. ИКТ
20
21. Спасибо за внимание!
Стучилин В.В.stuchilin.vv@misis.ru
Кафедра ИКТ,
НИТУ МИСИС
programming