Главная » Просмотр файлов » Саммерфилд - Программирование на Python 3

Саммерфилд - Программирование на Python 3 (1077331), страница 115

Файл №1077331 Саммерфилд - Программирование на Python 3 (Саммерфилд - Программирование на Python 3) 115 страницаСаммерфилд - Программирование на Python 3 (1077331) страница 1152018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 115)

Теперь мы знаем, как открыть (или создать) файл ЭВМ с помощью модуля 5Ье1че, как добавлять в него элементы, редактировать элементы, выполнять итерации по элементам и удалять элементы. К сожалению, в нашей базе данных имеется один недостаток. Имена режиссеров могут повторяться, что легко может приводить к несоответствиям, например, имя режиссера Эаппу ВеЧ11о для одного фильма может быть введено, как «Раппу Ре Ч11о», а для другого, как «[)аппу г[еЧ1$о». Одно из решений этой проблемы состоит в том, чтобы создавать два файла 1)ВМ.

Главный — с названиями в качестве ключей и значениями (год, продолжительность, идентификатор режиссера) и файл с режиссерами, ключами в котором являются идентификаторы режиссеров (например, целые числа), а значениями — имена.

Мы устраним этот недостаток в следующем разделе, где версия программы, работающей с базой данных ЯЯЬ, будет использовать две таблицы: в одной будет храниться информация о дисках, а во второй — о режиссерах. Базы данных 591. Интерфейсы к наиболее популярным базам данных Яь(Ь доступны в виде модулей сторонних разработчиков, а по умолчанию в составе Русйоп поставляется модуль эс11(ез (и база данных Явь[се 3), поэтому к созданию приложений баз данных можно приступать сразу же. База данных Яч(Ь[се — это облегченная база данных Яч(Ь, в которой отсутствуют многие особенности, которые имеются, например, в РовсйгеЯЯЬ, но ее очень удобно использовать для создания прототипов, и во многих случаях предоставляемых ею воэможностей оказывается вполне достаточно. С целью упростить миграцию с одной базы данных на другую, в РЕР 249 (Ру$)зоп Оа1аЬазе АР1 Ярес1з[са1[оп ч2.0) дается спецификация АР1, которая называется ЭВ-АР1 2.0, которой должны следовать интерфейсы к базам данных; модуль 5С11(еЗ, к примеру, следует этой специфи- Глава 11.

Программирование приложений баз данных Таблица 11,1. Методы обэекта соединения в соответствии со спецификацией РВ-АР1 2.0 Описание Синтаксис Закрывает соединение о базой данных (представленной объек- том ОЬ, который возвращается вызовом функции ооппео1()) ОЬ.С105е() Подтверждает любую„ожидающую подтверждения, транзак- цию з базе данных и ничего ие делает, если база данных не поддерживает транзакции бЬ.соээ11() Возвращает объект курсора базы данных, посредством которо- го могут зыполнлтьоя запросы ОЬ.оогэог() Откатывает любую, ожидающую подтверждения, транзакцию в базе данных до состояния, з котором база данных находи- лаоь ва момент начала транзакции, и ничего ие делает, если база данных не поддерживает транзакции бЬ.гоПЬасн() Рис.

11.1. Структура базы данных дисков РУР кации, но не все модули сторонних разработчиков соблюдают ее. Спецификацией АР1 определяются два основных объекта — объект соединения и объект курсора, а АР1, который они должны поддерживать, приводится в табл. 11.1 и в табл. 11.2. В случае с модулем эо1ые3 его объекты соединения и курсора предоставляют множество дополнительных атрибутов и методов сверх требований, предъявляемых спецификацией ПВ-АР1 2.0. Версия программы, использующая базу данных ВЯЬ, находится в файле дИз-зц1 ру.

Программа предусматривает хранение имен режиссеров отдельно от информации о дисках, чтобы избежать повторений, и предлагает дополнительный пункт меню, дающий пользователю получить список режиссеров. Структура двух таблиц показана на рис. 11.1. Размер этой программы составляет чуть меньше 300 строк, тогда как размер программы с(Ыз-с(Ьт.ру из предыдущего раздела составляет чуть меньше 200 строк. Такое различие в основном обусловлено необходимостью использовать запросы БЯЬ вместо простых операций со словарем, а также необходимостью создавать таблицы в базе данных при первом запуске программы.

Базы данных 5ЯЕ Таблица 11.2. Методы и атрибуты объекта курсора в соответствии со спецификацией ВВ АР1 20 Синтаксис Описание Число строк (доступно для чтения/записи), которое будет возвращено методом ГеСсзззпу(), если аргумент в!Се не определен с.зггаувые Закрывает курсор с — зта операция выполняется автома- тически, когда поток управления покидает область види- мости курсора с.с1ове() Последовательность (только для чтения), представленная кортежем из 7 элементов (пзае, Суре ссое, О!вр1зу в!Се, Спгегпз1 в!Се, ргес!в!оп, всз1е, пс11 сК), описывающая очередной столбецкурсорас с.оевсгзрССсп Выполняет запрос ЗЯТ., находящийся в строке вз1, замещая каждый символ-заполнитель соответствующим параметром из последовательности или отображения ра гаев, если имеется с.ехессге(вз1, регате) Выполняет запрос ЗЯ1 по одному разу для каждого элемента в последовательности последовательностей или отображений вес оу рагазв; этот метод не должен использоваться для выполнения операций, создающих наборы результатов (таких как инструкции НЕ(ЕСТ) с.ехессСеазпу (вп1, вес ог сагаев) Возвращает последовательность всех строк, которые еще не были извлечены (зто могут быть все строки) с.тесспз11() с.уегсзззпу(в!ге) Возвращает последовательность строк (каждая строка са- ма по себе является последовательностью); по умолчанию аргумент в!ге принимает значение с, вггзув!се Возвращает следующую строку из набора результатов, полученных в результате запроса, или Испе, если все ре- зультаты были исчерпаны.

Возбуждает исключение, если набор результатов отсутствует с.Ге!свозе() Доступный только для чтения счетчик строк для послед- ней операции (такой как БЕ!ЕСТ, 1ИНЕНТ, 0РСАТЕ или НЕСЕТЕ) или -1, если счетчик недоступен или не имеет смысла с.

гсхссспС Ое! соппесС(Г11епззе): сгевсе = пос св,рзсп.ехзвсв(гз1епзее) 00 = вп1!сез.соппесс(Т!1епаее) 1Г сгеаге: ссгвог = Ос.ссгвог() ссгвог.ехессге("СНЕАТЕ ТАНСЕ Озгесгсгв (" "зс 1МТЕСЕН РН!МАНУ КЕУ АИТ01ИСНЕМЕИТ 0М100Е МОТ М0(С, Функция аа!п() напоминает одноименную функцию нз предыдущей версии программы, только на этот раз она вызывает нашу функцию соппесС(), чтобы установить соединение с базой данных. 516 Глава 11. Программирование приложений баз данных "паве ТЕХТ Ой100Е ИОТ МОСЕ)") оогаог.ехеоо!е("СВЕАТЕ ТАВЕЕ Очса (" "ТО 1ИТЕОЕН РВ1МАВЧ КЕЧ АОТО1ИСЯЕМЕМТ 0И100Е ИОТ МОИ., "!Т!1е ТЕХТ МОТ МОСЕ, "уеаг 1ИТЕОЕН МОТ ИОН., "ОогаС1оп 1МТЕВЕН йОТ МОЫ., " "О!гео!Ьг !О 1МТЕОЕЯ ИОТ МОСЕ, "РОНЕ16И КЕЧ (01гео!ог 10) ЯЕРЕВЕМСЕВ О!гео!ога)") Оо.сове!!() ге!Ьгп ОЬ Функция ВС1!ТеЗ, соппес!() возвращает объект базы данных, открывает указанный файл базы данных или создает пустой файл базы данных, если файл не существует.

Вследствие этого перед вызовом функции ас11!еЗ.соппес!() необходимо проверить существование файла, чтобы знать, будет ли создаваться новая база данных, потому что вэтом случае необходимо создать таблицы, которые используются программой. Все запросы к базе данных выполняются с помощью объекта курсора, который можно получить вызовом метода согзог() объекта базы данных.

Обратите внимание, что в обеих таблицах присутствует поле В) с ограничением АОТ01ИСВЕМЕИТ вЂ” это означает, что Бь(Т.!$е автоматически будет записывать в поля 1Э уникальные числа, поэтому при добавлении новых записей можно переложить заботу о заполнении этих полей на Б»(1.!!е. База данных Б«ИТ !!е поддерживает ограниченный диапазон типов данных — по сути, только логические значения, числа и строки, но этот диапазон может быть расширен с помощью «адаптеров», либо предопределенных — для таких типов данных, как даты и время, либо создаваемых самостоятельно, которые могут использоваться для представления любых желаемых типов данных. В нашей программе этого не требуется, но в случае необходимости вы можете обратиться к описанию модуля ЯС1Т!еЗ, где описываются все подробности.

Синтаксис определения внешнего ключа, который мы использовали, возможно, не совпадает с синтаксисом определения внешнего ключа в других базах данных, но в любом случае — это просто описание наших намерений, поскольку база данных БС(Т.!!е, в отличие от многих других, соблюдает ссылочную целостность. Еще одна особенность ас1Т1еЗ, которая действует по умолчанию, заключается в неявной поддержке транзакций, поэтому в модуле отсутствует явный метод «запуска транзакции». Ое( асс Очс(ОЬ): !х!1е = Сопао1е.де! а!гхпд("Тд!1е", "!х!1е") !Г по! !!!1е; ге!Ьгп о!гео!ог = сопао1е.де! а!г1пд("Охгеосог", "о!геогог") !Г по! 01геогог: ге!игп Базы данных 5()Е 517 уааг = Соп501е.цаг 1п!едаг("уааг", "уааг", азп1аоа=)896, вахзаов=ба!егзае.ба!а.

Гобау().уеаг) бога!!оп = Сопао1е.де! !п(адаг("дога!!оп (а!по!55)", "а1погеа", а!о!зов=о, аах)воз=60*48) бзгасгог !б = да! апб 5Е1 бзгесгог(ОЬ, О!гас!ог) сог50Г = ОЬ.СНГ50Г() согаог.ехесо!е("1МЕЕЯТ 1МТО буба " "(1111е, уааг, бога!100, 01гес!ог 10) " "НАЕОЕЕ (?, ?, 0, ?)", (1111е, уааг, боГа11оп, бзгесгог 10)) ОЬ.сова!1() Эта функция начинается так же, как эквивалентная ей функция из программы Г!Ыа-с((злг.ру, отличия начинаются после сбора всей необходимой информации.

Характеристики

Тип файла
DJVU-файл
Размер
6,88 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее