УДК 004.42
К ВОПРОСУ О РЕАЛИЗАЦИИ БАЗ ДАННЫХ В ЯЗЫКЕ ПРОГРАММИРОВАНИЯ PYTHON
А.В. Химич
ФГБОУ ВО «Брянский государственный университет имени академика И.Г. Петровского»
Рассмотрены основные виды баз данных, описаны основные возможности реализации баз данных в языке программирования Python. Обоснован выбор модуля SQLite для создания приложений на языке программирования Python.
Ключевые слова: база данных, Python, SQL, SQLite
Язык программирования Python является универсальным. В стандартный комплект Python входит библиотека для решения различных задач. В сети Интернет доступны качественные библиотеки для Python по различным предметным областям: средства обработки текстов и технологии Интернет, обработка изображений, инструменты для создания приложений, механизмы доступа к базам данных, пакеты для научных вычислений, библиотеки построения графического интерфейса и т.п. [1-3].
Сферы применения языка Python достаточно разнообразны: системное администрирование, программирование встроенных систем, разработка прикладного программного обеспечения, разработка игр, модульное тестирование, компьютерная графика, базы данных, визуализация данных и т.д.
Язык Python предлагает широкий спектр возможностей для работы с базами данных различных структур. Использование баз данных - это один из способов хранения информации. Они полезны не только в хранении данных, но и в выборке определенных записей по различным параметрам.
Базы данных (БД) - это совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования баз данных. По-другому это библиотека, хранящая некие данные в том или ином виде.
Базы данных делятся на реляционные, сетевые и иерархические. Сетевые и иерархические базы данных представляют собой графы и хранят информацию в них же. В реляционных базах данных информация хранится в виде таблицы.
Сегодня наиболее распространённым подходом организации базы данных веб-приложения являются реляционные базы данных.
Для описания структуры БД, управления данными (добавление, изменение, удаление, получение данных), управление правами доступа к БД и её объектам, управление транзакциями используют язык запросов БД.
SQL - это структурированный язык запросов, позволяющий управлять базами данных, таблицами в них и т.д. SQL расшифровывается как Structured Query Language (язык структурированных запросов).
Язык SQL подразделяется на следующие категории и в каждой категории есть свои операторы [4]:
• DDL (Data Definition Language) - язык описания данных
• DML (Data Manipulation Language) - язык манипулирования данными
• DCL (Data Control Language) -язык определения доступа к данным
• TCL (Transaction Control Language) - язык управления транзакциями
Для работы с реляционной СУБД в Python можно использовать два подхода:
• Работать с библиотекой, которая соответствует конкретной СУБД, и использовать для работы с БД язык SQL. Например, для работы с SQLite используется модуль sqlite3.
• Работать с ORM, которая использует объектно-ориентированный подход для работы с БД. Например, SQLAlchemy.
Рассмотрим более подробно модуль SQLite.
Модуль SQLite - это автономный, работающий без сервера транзакционный механизм базы данных SQL. Python получил модуль sqlite3 в версии 2.5, поэтому открывается возможность создавать базу данных в любой настоящей версии Python, без необходимости скачивания и установки дополнительных инструментов.
Модуль SQLite - легко интегрируемая база данных для приложения. Ее работа основывается на работе с файлами, что предоставляет большой набор инструментов для работы с ней, в отличие от сетевых систем управления базами данных (далее - СУБД). При работе с SQLite обращение происходит не к сокетам и портам как в сетевых СУБД, а непосредственно к файлам, что обеспечивает большую скорость работы. Вся база состоит из одного файла, что позволяет легко переносить ее на разные компьютеры. Данная СУБД отлично подходит для разработки и тестирования, она не требует дополнительной установки и имеет хорошие возможности масштабирования, соблюдая при этом стандарты SQL. Главными недостатками этой системы является отсутствие системы пользователей и возможности увеличения производительности.
Например, Mozilla использует базы данных SQLite в своем популярном браузере Firefox, чтобы хранить закладки и прочую информацию.
Модуль SQLite предоставляет прекрасную возможность для построения небольших и быстрых баз данных, однако существуют и другие модули расширения Python для других СУБД. Такие как, например, MySQL, zxJDBC, DCOracle2, Sybase и другие.
Несмотря на достаточно хорошие теоретические основы и стабильные реализации, реляционная модель - не единственная из успешно используемых сегодня. К примеру, в языке программирования XML есть интерфейсы для работы с ним в Python [1]. Древовидная модель данных XML для многих задач является более естественной, и в настоящее время идут исследования, результаты которых позволят работать с XML так же легко и стабильно, как с реляционными СУБД. Язык программирования Python - один из полигонов этих исследований.
Решая конкретную задачу, разработчик программного обеспечения должен сделать выбор средств, наиболее подходящих для решения задачи. Очень многие подходят к этому выбору с предвзятостью, выбирая неоптимальную (для данной задачи или подзадачи) модель данных. В результате данные, которые по своей природе легче представить другой моделью, приходится хранить и обрабатывать в выбранной модели, зачастую невольно моделируя более естественные структуры доступа и хранения. Так, XML можно хранить в реляционной БД, а табличные данные - в XML, однако это неестественно. Из-за этого сложность и подверженность ошибкам программного продукта возрастают, даже если использованные инструменты высокого качества.
Схематично работа с базой данных может выглядеть примерно так:
• Подключение к базе данных (вызов connect() с получением объекта соединения).
• Создание одного или нескольких курсоров (вызов метода объекта соединения cursor() с получением объекта-курсора).
• Исполнение команды или запроса (вызов метода execute() или его вариантов).
• Получение результатов запроса (вызов метода fetchone() или его вариантов).
• Завершение транзакции или ее откат (вызов метода объекта-соединения commit() или rollback)).
• Когда все необходимые транзакции произведены, подключение закрывается вызовом метода close() объекта-соединения.
Для Python разработан стандарт, называемый DB-API (версия 2.0), которого должны придерживаться все разработчики модулей сопряжения с реляционными базами данных. Благодаря этому API код прикладной программы становится менее зависимым от марки используемой базы данных, его могут понять разработчики, использующие другие базы данных. Фактически DB-API 2.0 описывает имена функций и классов, которые должен содержать модуль сопряжения с базой данных, и их семантику. Модуль сопряжения должен
содержать класс объектов-соединений с базой данных и класс для курсоров - специальных объектов, через которые происходит коммуникация с СУБД на прикладном уровне.
Таким образом, язык программирования Python открывает возможность использования многочисленных встроенных модулей для работы с базами данных различных структур. Выбор конкретной базы данных напрямую завит от её дальнейшего использования, а Python лишь предоставляет обширный инструментарий для работы с каждой. Наиболее востребованным и удобным является модуль SQLite, который работает с небольшими, но быстрыми базами данных.
Список литературы
1. Сузи Р. Язык программирования Python / Р. Сузи. Режим доступа: https://www.intuit.ru/studies/courses/49/49/info 24/05/2020
2. Хеллман Д. Стандартная библиотека Python3: справочник с примерами, 2-е издание: Пер. с англ. - СПб.: ООО «Диалектика», 2020. - 1376 с.
3. Химич А.В. Возможности Python в веб-разработке / А.В. Химич - Материалы XI Международной студенческой электронной научной конференции «Студенческий научный форум». Режим доступа: https://scienceforum.ru/2019/article/2018011801 26/05/2020
4. Чан Уэсли Дж. Python. Создание приложений / пер. с англ. Птицын К., Пелявский О. - М.: Вильямс, 2016. - 816 c.
Сведения об авторе
Химич Анна Васильевна - магистрант кафедры информатики и прикладной математики Брянского государственного университета имени академика И.Г. Петровского, e-mail: annahimich14@mail.ru.
TO THE QUESTION OF IMPLEMENTING DATABASES IN PYTHON PROGRAMMING LANGUAGE
А-V. Khimich
Bryansk State University named after Academician I. G. Petrovsky
The main types of databases are considered, and the main features of implementing databases in the Python programming language are described. The choice of the SQLite module for creating applications in the Python programming language is justified. Keywords: database, Python, SQL, SQLite.
References
1. Suzi R. Python programming language / R. Suzi. Mode of access: https://www.intuit.ru/studies/courses/49/49/info 24/05/2020
2. Hellman D. Standard library Python 3: reference with examples, 2nd edition: TRANS. from English-SPb.: LLC «Dialektika», 2020 - 1376 p.
3. Himich A.V. Python Capabilities in web development / A.V. Himich-Materials of the XI International student electronic scientific conference «Student scientific forum». Mode of access: https://scienceforum.ru/2019/article/2018011801 26/05/2020
4. Chan Wesley J. Python. Creating applications / TRANS. from English. Ptitsyn K., Pelyavsky O.-M.: Williams, 2016. - 816 p.
About author
Himich A.V. - undergraduate student, the Department of Informatics and Applied Mathematics, Bryansk State University named after Academician I.G. Petrovsky, e-mail: annahimich14@mail.ru.