Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

6 СЕМЕСТР / ЛР / ЛР7 / БД ЛР7

.pdf
Скачиваний:
14
Добавлен:
25.06.2023
Размер:
1.18 Mб
Скачать

ГУАП

КАФЕДРА № 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

Соседние файлы в папке ЛР7