ГУАП
КАФЕДРА № 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
ассистент |
|
|
|
В.В. Боженко |
|
|
|
|
|
|
|
|
|
|
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №7
СВЯЗЬ СУБД POSTGRESQL И PYTHON
по курсу: БАЗЫ ДАННЫХ
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. №
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2022
Цель работы
Произвести связь базы данных в PostgreSQL и Python, изучить операции
по манипулированию с данными БД, а также созданию простейших
пользовательских функций.
Индивидуальный вариант
Индивидуальный вариант №10
Формулировка запросов:
•Найти профессию, диапазон которой между минимальной и максимальной зарплатой меньше, чем у остальных профессий.
•Вывести названия профессий(job_title) и среднюю зарплату (в диапазоне от 2000 до 5000) сотрудников этих профессий.
Исходные данные
Схема дынных БД «students» в соответствии с рисунком 1.
Рисунок 1 – Схема данных
2
Ход работы
1) Соединили Python c БД в PostgreSQL. Код в соответствии с листингом 1, результат соединения в соответствии с рисунком 2. Код всех пунктов находится в Приложении А.
Листинг 1 – Код соединения Python c БД в PostgreSQL
import pandas as pd import psycopg2
# Подключение к базе данных:
connection = psycopg2.connect(database="students"
,user="postgres"
,password="12345678qwerty"
,host="127.0.0.1"
,port="5432")
#курсор для выполнения операций с БД
cursor = connection.cursor()
# вывод свойства соединения print(connection.get_dsn_parameters(), "\n")
# выполнение запроса к БД cursor.execute("SELECT version();")
# получение результата запроса version_ps = cursor.fetchone()
print("Вы подключены к - ", version_ps, "\n")
Рисунок 2 – Результат соединения Python и БД PostgreSQL
3
2) Выполним запрос на выборку данных из таблицы с работами для проверки соединения с БД. Код и результат запроса в соответствии с рисунками 3-4.
Рисунок 3 – Код запроса
Рисунок 4 – Результат запроса
3)Создали новую таблицу «locations» в БД «students» с помощью
Python, заполнили ее данными и вывели их для проверки. Код создания и результат в соответствии с рисунками 5-8.
Рисунок 5 – Код создания таблицы «locations»
Рисунок 6 – Результат создания таблицы «locations»
4
Рисунок 7 – Код заполнения таблицы «locations»
Рисунок 8 – Результат заполнения таблицы «locations»
Рисунок 9 – Код вывода данных таблицы «locations»
Рисунок 10 – Результат вывода данных таблицы «locations»
5
4) Добавили в таблицу с сотрудниками поле location_id и связали с таблицей locations с помощью команды ALTER TABLE. Заполнили столбец location_id в таблице сотрудников случайными значениями из поля location_id
таблицы locations воспользовавшись командой UPDATE. Код и результат в соответствии с рисунками 11-13.
Рисунок 11 – Код создания поля location_id его заполнения поля
Рисунок 12 – Результат создания связи таблиц employees и locations
Рисунок 13 – Результат заполнения таблицы
6
5) Выполнили 3 запроса SELECT в Python в соответствии с вариантом задания.
Первый запрос находит профессию, диапазон которой между минимальной и максимальной зарплатой меньше, чем у остальных профессий.
Код и результат запроса в соответствии с рисунком 14.
Рисунок 14 – Код и результат первого запроса
Второй запрос выводит названия профессий(job_title) и среднюю зарплату (в диапазоне от 2000 до 5000) сотрудников этих профессий. Код и результат запроса в соответствии с рисунком 15.
Рисунок 15 – Код и результат второго запроса
7
Третий запрос находит среднюю зарплата менеджеров, менеджеров отделов и остальных сотрудников по городам и сортирует по должности и размеру средней зарплаты. Код и результат запроса в соответствии с рисунками 16-17.
Рисунок 16 – Код третьего запроса
Рисунок 17 – Код третьего запроса
8
6) Создали и вызвали функцию select_data в СУБД PostgreSQL. В
качестве параметра id_dept в функцию передается значение integer, с которым сравниваются поле department_id из таблицы departments. Функция возвращает строки чей идентификатор больше переданного в функцию параметра. Код и результат в соответствии с рисунками 18-19.
Рисунок 18 – Код создания, вызова функции и результат ее работы
Рисунок 19 – Вызов функции и результат ее работы в pgAdmin 4
9
7) Вызвали функцию select_data в Python. Код и результат в соответствии с рисунком 20.
Рисунок 20 – Вызов функции select_data и ее результат
10