Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Чурилов / 4 курс / Z9411_Чурилов_БазыДанных_ЛР1

.docx
Скачиваний:
1
Добавлен:
10.11.2024
Размер:
211.63 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА 41

ОЦЕНКА

ПРЕПОДАВАТЕЛЬ

кандидат техн. наук

Е.Л. Турнецкая

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №1

Связь СУБД MySQL и Python. Визуализация данных в Python.

по курсу: БАЗЫ ДАННЫХ

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

Z9411

А.С.Чурилов

номер группы

подпись, дата

инициалы, фамилия

Студенческий билет № 2019/3684

Санкт-Петербург 2023

Цель работы:

Произвести связь базы данных в MySQL и Python, извлечь данные из таблиц базы данных и выполнить анализ данных в БД с помощью визуализации в Python.

Ход работы:

Телевизионная компания

Вы являетесь руководителем коммерческой службы телевизионной компании. Вашей задачей является отслеживание расчетов, связанных с прохождением рекламы в телеэфире. Работа построена следующим образом: заказчики просят поместить свою рекламу в определенной передаче в определенный день. Каждый рекламный ролик имеет определенную продолжительность. Для каждой организации–заказчика известны банковские реквизиты, телефон и контактное лицо для проведения переговоров. Передачи имеют определенный рейтинг. Стоимость минуты рекламы в каждой конкретной передаче известна (определяется коммерческой службой, исходя из рейтинга передачи и прочих соображений). Также необходимо хранить информацию об агентах, заключивших договоры на рекламу. Зарплата рекламных агентов составляет некоторый процент от общей стоимости рекламы, прошедшей в эфире.

Схема данных (Рисунок 1).

Рисунок 1 – Схема данных

Связал Python с базой данных и вывел таблицу (Листинг 1, Рисунок 2).

Листинг 1 – Подключение БД и вывод таблицы

import pandas as pd

import pymysql.cursors

import matplotlib.pyplot as plt

import matplotlib.dates as dates

def test():

with connection.cursor() as cursor:

sql = "select * from customer"

# Выполнение команды запроса (Execute Query)

cursor.execute(sql)#выполняет запрос

rows = cursor.fetchall()#получает результат

df = pd.DataFrame(rows) #выводит запрос

connection.close()

print(df)

try:

connection = pymysql.connect(

host='127.0.0.1',

port=3306,

user='root',

password=admin,

db='tv',

cursorclass=pymysql.cursors.DictCursor)

print('connection successful')

except Exception as ex:

print('connection lost...')

print(ex)

Рисунок 2 – Вывод таблицы

Запрос с агрегатной функцией – подсчет кол-во строк в таблице (Листинг 2, Рисунок 3).

Листинг 2 – Код запроса с агрегатной функцией

sql = "select count(*) from customer;"

Рисунок 3 – Агрегатные функции

Запрос с сортировкой – данная команда осуществляет поиск по столбцу с процентом, выводит значения, где процент больше 16 (Листинг 3, Рисунок 4).

Листинг 3 – Запрос с сортировкой

sql = " SELECT * FROM agent where Agent_Percent>16 order by agent.agent_id;;"

Рисунок 4 – Сортировка

Запрос с группировкой – единичный вывод данных из таблицы (Листинг 4, Рисунок 5).

Листинг 4 – Запрос с группировкой

select * from customer group by customer_id

Рисунок 5 – Группировка

С помощью pyplot создал графики с процентом, который берет организация (Листинг 5-6, Рисунок 6-7).

Листинг 5 – Запрос на график

with connection.cursor() as cursor:

sql = "select agent_lastName, agent_percent from agent ;"

cursor.execute(sql)

rows = cursor.fetchall()

df = pd.DataFrame(rows)

connection.close()

print(df)

plt.figure()

plt.tick_params(axis='x', rotation=90)

plt.bar(df['agent_lastName'],df['agent_percent'], color="yellow")

plt.title('Процентная ставка')

plt.xlabel('Агент')

plt.ylabel('Ставка ')

plt.tick_params(axis='x', rotation=90)

plt.show()

Рисунок 6 – Процентная ставка

Листинг 6 – Запрос на график

plt.pie(df['agent_percent'],labels=df['agent_lastName'])

plt.show()

Рисунок 7 – Процентная ставка

Вывод:

В данной лабораторной работе подключили БД MySQL Workbench с помощью языка программирования Python, реализовал несколько запросов, которые были непосредственно связаны с таблицами, и построил графики по опять же данным таблицам.