ebook img

Программирование на Perl DBI PDF

395 Pages·2001·1.923 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Программирование на Perl DBI

Programming the Perl DBI Alligator Descartes, Tim Bunce Программирование на Perl DBI Аллигатор Декарт и Тим Банс Санкт(cid:6)Петербург 2001 Аллигатор Декарт, Тим Банс Программирование на Perl DBI Перевод С.Маккавеева Главный редактор А.Галунов Зав. редакцией Н.Макарова Научный редактор В.Рижий Редакторы Е.Изотова, Н.Макарова Корректура С.Беляева Верстка Е.Изотова, Н.Макарова Декарт А., Банс Т. Программирование на PerlDBI.– Пер. с англ.– СПб: Символ(cid:19)Плюс, 2001.– 400 с., ил. ISBN 5(cid:19)93286(cid:19)013(cid:19)8 Данная книга будет полезна как новичкам, которые найдут в ней описание ар(cid:19) хитектуры DBI и подробные инструкции по написанию программ с помощью DBI, так и знатокам DBI, которым предназначено описание тонкостей исполь(cid:19) зования DBI и специфических особенностей отдельных драйверов DBD. DBI является основным интерфейсом программирования баз данных на Perl. Любая программа, использующая DBI, может работать с любой базой данных или даже одновременно с несколькими базами данных различных фирм, таки(cid:19) ми как Oracle, Sybase, Ingres, Informix, MySQL, Access и другие. Издание содержит полный справочник по DBI. Книга написана с учетом того, что читатель имеет базовые навыки программирования на Perl и может писать простые сценарии. ISBN 5(cid:1)93286(cid:1)013(cid:1)8 ISBN 1(cid:1)56592(cid:1)699(cid:1)4 (англ) © Издательство Символ(cid:19)Плюс, 2001 Authorized translation of the English edition © 2000 O’Reilly & Associates Inc. This translation is published and sold by permission of O’Reilly & Associates Inc., the own(cid:19) er of all rights to publish and sell the same. Все права на данное издание защищены Законодательством РФ, включая право на полное или час(cid:19) тичное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные зна(cid:19) ки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм. Издательство«Символ(cid:19)Плюс».193148,Санкт(cid:19)Петербург,ул.Пинегина,4, тел.(812) 567(cid:19)8775. Лицензия ЛП N 000054 от 25.12.98. Подписано в печать 31.10.2000. Формат 70х1001 /16. Бумага офсетная. Печать офсетная. Объем 25 печ.л. Тираж 3000 экз. Заказ N Отпечатано с диапозитивов в ГПП «Печатный Двор» Министерства РФ по делам печати, телерадиовещания и средств массовых коммуникаций. 197110, Санкт(cid:19)Петербург, Чкаловский пр., 15. Оглавление Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Дополнительные источники информации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Типографские обозначения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Как с нами связаться. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Примеры программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 1. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 От мэйнфреймов к рабочим станциям . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 Perl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 DBI в реальном мире . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Историческое отступление и стоящие камни. . . . . . . . . . . . . . . . . . . . . . . . . . 20 2. Основные базы данных, не использующие DBI. . . . . . . . . . . . . . . .21 Администраторы хранения данных и слои программного обеспечения . . .23 Языки запросов и функции данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Стоящие камни и учебная база данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Одноуровневые базы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Размещение в плоских файлах сложных данных . . . . . . . . . . . . . . . . . . . . . . 38 Одновременный доступ к базе данных и блокировка. . . . . . . . . . . . . . . . . . .47 Файлы DBM и Berkeley Database Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Модуль MLDBM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70 Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 3. SQL и реляционные базы данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Методология реляционных баз данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 Типы данных и значения NULL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76 Запрос данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 Изменение данных в таблицах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91 Создание и удаление таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 4. Программирование с помощью DBI . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Архитектура DBI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 Дескрипторы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 6 Оглавление Имена источников данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105 Соединение и отсоединение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Обработка ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Вспомогательные методы и функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 5. Взаимодействие с базами данных . . . . . . . . . . . . . . . . . . . . . . . . . 132 Выполнение простых запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132 Выполнение команд, отличных от SELECT. . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Привязка параметров к командам . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149 Связывание выходных колонок. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 Сравнение do() и prepare(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 Атомарная и пакетная выборки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 6. Более сложные вопросы использования DBI. . . . . . . . . . . . . . . . . 166 Атрибуты дескрипторов и метаданные. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166 Обработка данных типа LONG/LOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 Транзакции, блокировка и изоляция. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187 7. ODBC и DBI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197 ODBC – результат принятия и расширения . . . . . . . . . . . . . . . . . . . . . . . . . . .198 DBI– проработан и изменен. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 Механизм ODBC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199 Доступ к ODBC из Perl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Альянс DBI с ODBC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Вопросы и предпочтения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Переход с Win32::ODBC на DBI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 А как в отношении ADO?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 8. Командный процессор для DBI и прокси(cid:1)доступ к базам данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 dbish– командный процессор DBI (Shell). . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Доверительный доступ к базам данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213 A. Спецификация DBI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 B. Характеристики драйверов и баз данных. . . . . . . . . . . . . . . . . . . . 276 C. Хартия священных площадок ASLaN . . . . . . . . . . . . . . . . . . . . . . . . . 382 Алфавитный указатель. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .384 Предисловие DBI является стандартным интерфейсом баз данных для языка прог(cid:19) раммирования Perl. DBI не зависит от базы данных, т.е. позволяет ра(cid:19) ботать практически с любой базой данных, в том числе c Oracle, Syba(cid:19) se, Informix, Access, MySQL и т.д. Мы предполагаем у читателей данной книги наличие некоторого опы(cid:19) та работы с Perl, но не ожидаем хорошего знакомства с собственно ба(cid:19) зами данных. Изложение в книге развертывается неспешно, описывая различные типы баз данных и знакомя читателя с общепринятой тер(cid:19) минологией. Эта книга посвящена не только DBI, она касается более общей темы хранения и извлечения данных из баз различного вида. Это выражает(cid:19) ся и в том, что книга состоит из двух взаимосвязанных, но независи(cid:19) мых частей. В первой части рассказывается о способах хранения и извлечения данных без использования DBI, в то время как вторая, и значительно большая по размеру часть охватывает использование DBI и родственных технологий. На протяжении всей книги предполагается, что у читателя есть базо(cid:19) вые навыки программирования на Perl, и он может самостоятельно писать простые сценарии. Если ваш уровень знания Perl не достато(cid:19) чен, советуем прочесть какие(cid:19)нибудь книги по Perl, перечисленные в разделе «Дополнительные источники информации» данного преди(cid:19) словия. Если вы достаточно подготовлены, можете читать книгу не подряд, а в зависимости от того, какие темы вас больше интересуют. Если вас ин(cid:19) тересует только DBI, можете безболезненно пропустить главу2. С дру(cid:19) гой стороны, если вы хорошо разбираетесь в SQL, то, вероятно, про(cid:19) пустите главу3, которая огорчила бы вас отсутствием описания мно(cid:19) гих важных тонкостей. В главе7 сравниваются DBI и ODBC, и она ин(cid:19) тересна, в основном, «пахарям» от баз данных, ревнителям проекти(cid:19) рования и тем, кто отчаянно пытается перенести свои приложения Win32::ODBC на DBI. Вот перечень содержания книги по главам: Глава 1 «Введение». Позволяет получить общее представление о книге. 8 Предисловие Глава 2 «Основные базы данных, не использующие DBI». В этой главе рассказывается об основах хранения и извлечения дан(cid:19) ных с помощью базовых функций Perl посредством одноуровневых баз данных, иначе называемых базами данных на плоских файлах (flat(cid:19)file database), использующих разделители или поля фиксиро(cid:19) ванной ширины, либо через модули, не использующие DBI, такие как AnyDBM_File, Storable, Data::Dumper и другие. Хотя в этой главе не упоминается непосредственно DBI, способ, которым модули Storab(cid:1) le и Data::Dumper упаковывают структуры данных Perl в строки, мо(cid:19) жет легко быть применен и к DBI. Глава 3 «SQL и реляционные базы данных». В этой главе дается обзор основ SQL и реляционных баз данных, а также объясняется, как можно писать простые, но мощные SQL(cid:19) выражения для построения запросов к базам данных и обработки их результатов. Если вы в какой(cid:19)то мере знакомы с SQL, можете пропустить эту главу. Если же вы не знаете SQL, советуем прочесть ее, поскольку в последующих главах предполагается наличие базо(cid:19) вых знаний об SQL и реляционных базах данных. Глава 4 «Программирование с помощью DBI». Эта глава знакомит с DBI путем изложения его архитектуры и ос(cid:19) новных DBI(cid:19)операций, таких как соединение с базами данных и об(cid:19) работка ошибок. Эту главу важно прочесть, поскольку в ней описы(cid:19) вается структура, которую предоставляет DBI для написания прос(cid:19) тых, мощных и надежных программ. Глава 5 «Взаимодействие с базами данных». В этой главе изложен основной материал по использованию DBI и обсуждается работа с данными в базе– извлечение данных, кото(cid:19) рые в ней уже хранятся, вставка новых данных, удаление и обнов(cid:19) ление существующих данных. Мы рассказываем о различных спо(cid:19) собах, которыми можно осуществлять эти операции, от простого этапа «заставить это работать» до более развитых и оптимизирован(cid:19) ных приемов работы с данными. Глава 6 «Более сложные вопросы использования DBI». Эта глава охватывает более сложные темы в сфере действия DBI, та(cid:19) кие как тонкая настройка действия DBI в ваших программах, рабо(cid:19) та с типами данных LONG/LOB, метаданные команд и баз данных и, наконец, обработка транзакций. Глава 7 «ODBC и DBI». В этой главе обсуждается различие архитектур DBI и ODBC– друго(cid:19) го переносимого API баз данных. И конечно, особое внимание уделено вопросу, почему программировать с помощью DBI проще. Предисловие 9 Глава 8 «Командный процессор для DBI и прокси(cid:19)доступ к базам дан(cid:19) ных». В этой главе обсуждаются две темы, не имеющие непосредствен(cid:19) ного отношения к ядру DBI как таковому, но знание которых ока(cid:19) зывается очень полезным. Сначала мы расскажем об оболочке DBI– инструменте командной строки, позволяющем подключаться к базам данных и делать произвольные запросы. Другая тема– ар(cid:19) хитектура доверительного доступа (proxy), с помощью которой DBI может, в частности, подключать сценарии на одной машине к базам данных на другой без необходимости установки программного обес(cid:19) печения для сетевой работы с базами данных. Например, можно подключать сценарии, выполняющиеся на Unix(cid:19)системе, к базе данных Microsoft Access, работающей на машине под Microsoft Windows. Приложение А «Спецификация DBI». Приложение содержит спецификацию DBI, поставляемую с DBI.pm. Приложение B «Характеристики драйверов и баз данных». В приложении содержатся полезные дополнительные данные обо всех часто используемых DBD и соответствующих им базах дан(cid:19) ных. Приложение C «Хартия хранителей священных площадок ASLaN». В этом приложении содержится Хартия сети хранителей древних святилищ (Ancient Sacred Landscape Network), имеющая целью сохранение древних священных мест, таких как мегалитические площадки, используемые для примеров в этой книге. Дополнительные источники информации Чтобы облегчить изучение некоторых тем книги, перечислим допол(cid:19) нительные источники, которые вам могут потребоваться до, во время или после чтения этой книги. http://www.symbolstone.org/technology/perl/DBI Домашняя страница DBI. Этот сервер содержит массу полезных сведений о DBI и о том, откуда получить различные модули. Здесь вы также найдете ссылки на активный список рассылки dbi(cid:19)users и архивы. http://www.perl.com/CPAN Сервер объединяет Comprehensive Perl Archive Network – всесто(cid:19) роннюю архивную сеть Perl, в которой можно найти массу полез(cid:19) ных модулей, в том числе DBI. 10 Предисловие C. J. Date «An Introduction to Database Systems»1. Стандартный учебник по базам данных, весьма рекомендуемый для чтения. C. J. Date, Hugh Darwen «A Guide to the SQL Standard». Отличная книга, подробная, но небольшая по объему и легко чита(cid:19) емая. http://w3.one.net/~jhoffman/sqltut.htm http://www.jcc.com/SQLPages/jccs_sql.htm http://www.contrib.andrew.cmu.edu/~shadow/sql.html На этих сайтах содержатся информация, спецификации и ссылки по языку запросов SQL, введение в который мы даем в главе 3. До(cid:19) полнительную информацию можно получить, введя «SQL tutorial» или аналогичное выражение в строку поиска вашей любимой поис(cid:19) ковой машины Интернета. Randal Schwartz, Tom Christiansen «Learning Perl»2. Практическое руководство, цель которого помочь вам как можно быстрее начать писать сценарии Perl. Каждую главу сопровождают упражнения (с полными решениями). Большая новая глава знако(cid:19) мит вас с CGI(cid:19)программированием, затрагивается также использо(cid:19) вание библиотечных модулей, ссылок и объектно(cid:19)ориентирован(cid:19) ных конструкций в Perl. Larry Wall, Tom Christiansen, Randal Schwartz «Programming Perl»3. Авторитетное руководство по Perl5– средству создания сценариев, ставшему предпочтительным средством программирования в World Wide Web, системном администрировании Unix и для боль(cid:19) шого числа других задач. Одним из авторов книги является Ларри Уолл (Larry Wall), создатель Perl. Tom Christiansen, Nathan Torkington «The Perl Cookbook»4. Всеобъемлющее собрание задач, решений и практических приме(cid:19) ров для всех, программирующих на Perl. Охватывает темы от во(cid:19) просов, возникающих у новичков, до приемов, поучительных даже для опытных программистов на Perl. Нечто большее, чем простое собрание советов и ловких приемов, «The Perl Cookbook» является долгожданным дополнением к «Programming Perl», содержащим ранее не публиковавшиеся тайны Perl. 1 К.Дейт «Введение в системы баз данных» 6 издание, изд(cid:19)во «Диалектика». 2 Р.Шварц, Т.Кристиансен «Изучаем Perl», изд(cid:19)во «BHV(cid:19)Киев». 3 Л.Уолл, Т.Кристиансен, Р.Шварц «Программирование на Perl» 3 издание, изд(cid:19)во «Символ(cid:19)Плюс», февраль 2001 г. 4 Т.Кристиансен, Н.Торкингтон «Perl: библиотека программиста», изд(cid:19)во «Питер».

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.