TL;DR: нужно написать код простого приложения, общающегося с БД через API. Исходники для генерации схемы и данных тут: hw03.zip
Установка
Для того, чтобы протестировать приложение, нужно запустить Postgres, создать схему и заполнить БД данными. Команды, создающие схему, и питоновский скрипт, генерирующий данные, предполагают, что Постгрес запущен на локальной машине на стандартном для него порту 5432 и в нем есть пользователь
postgresс паролем
csc.
Инструкции по установке постгреса для вашей OS ищите на сайте постгреса. Те, кто пользуется Докером (разве кто-то еще не пользуется Докером?), могут установить и запустить постгрес командой
docker run --name postgres-dbms-2015-hw03 -e POSTGRES_PASSWORD=csc -d -p 5432:5432 postgres
Если докеровского образа с постгресом у вас еще нет то он будет скачан (несколько десятков мегабайт). Постгрес запустится так, как написано выше (порт, пользователь, пароль)
Кроме постгреса вам понадобится python. В python 3 скорее всего всё тоже будет работать, но выяснять при проверке и чтении каждого из ваших сорока решений, какой же там нынче используется питон, совершенно не хочется. Поэтому если вы можете использовать Python 2, используйте пожалуйста его.
Для работы с постгресом из питона нужно будет установить пакет psycopg2. Пользователи Ubuntu/Debian могут поставить его командой
apt-get install python-psycopg2
Пользователи других систем - обратитесь к документации об установке питоновских пакетов для вашей системы.
Генерация схемы и данных
В архиве hw03.zip находятся несколько файлов.-- генерация схемы
psql -h localhost -U postgres < 01_gen_schema.sql
-- заполнение схемы данными
python 02_gen_data.py
-- проход по содержимому таблицы Conference
python 03_scan_conference.py
Докеровский образ с готовыми данными
Можно воспользоваться докеровским образом, в котором уже сгенерирована схема и данные. Команда
docker run --name postgres-dbms-2015-hw03 -d -p 5432:5432 dbarashev/postgres:csc_hw03
должна его скачать и запустить постгрес, в котором уже всё есть. Локальный питон и psycopg2 вам всё равно потребуются.
Схема БД
У вас есть 4 таблицы: University(university_id, name), Researcher(researcher_id, name, university_id), Conference(conference_id, name) и Participant(conference_id, researcher_id). Думаю, что их смысл очевиден из названий таблиц и столбцов.
Задание
Вам нужно написать два скрипта. Первый для каждой конференции должен посчитать количество её участников, работающих в заданном университете. Название университета передавайте в аргументах командной строки. Запуск скрипта должен выглядеть примерно так:
python hw3_01.py Uni42
Второй скрипт должен перевести всех исследователей из одного университета в другой, а первый университет удалить. Названия университетов тоже передавайте в командной строке. Запуск должен выглядеть примерно такЖ
python hw3_02.py Uni42 Uni24
После этого Uni42 должен быть удален, а все, кто в нем работал, должны оказаться в Uni24
Замечания
Задачу можно решить разными способами. Если вы знаете хороший, то прекрасно, воспользуйтесь им. Если хорошего не знаете, то решите каким-то, и нам будет о чем поговорить на занятии. Будет неплохо, если вы вкратце опишете своё решение в сопроводительном тексте. Например
иду циклом в питоне по исследователям из первого университета и для каждого выполняю запрос...
Помните, что задание не на искусство написания красивого и непонятного питоновского кода. Чем проще будет этот код, тем лучше.
Как сдавать решение
Присылайте решения в виде текстовых файлов с расширением .py в кодировке UTF-8 на адрес dbms@barashev.net. Если можете прицепить два файла, то так и сделайте, если нет, то положите в ZIP архив. Писать код в тексте письма не нужно.
Дедлайн: вечер 12 октября
Дедлайн: вечер 12 октября
Если у вас возникнут какие-нибудь нетривиальные идеи, не поленитесь написать комментарий, поясняющий их.