Давайте в данной статье поговорим о том, как подключать и использовать в Питоне таблицы базы данных. Это пригодится как новичкам, так и опытным разработчикам. Упор будет сделан на базах данных MySQL и SQLite.
MySQL – описание и особенности
MySQL представляет собой систему управления базами данных. Это – организованная в виде таблиц система открытого типа, которая поддерживает универсальные языки программирования SQL.
При помощи нее пользователи смогут выполнять различные операции с БД:
- обнаруживать;
- редактировать;
- удалять.
Это – специализированный инструмент для поиска и внесения корректировок в документы немалого объема.
Работа здесь производится по принципу клиент-сервер. MySQL производит обмен между пользователем и хранилищами данных. Поиск и выдача результата делаются по принципам множества и записи, где первое – это наименования таблицы, второе – строчка в оной.
Это значит, что:
- Все таблицы будут связаны между собой, образовывая круговую (циркулярную) связь.
- Система будет автоматически подбирать подходящую под запрос оператора информацию.
- Данные берутся из уже имеющихся табличных «списков».
Эта СУБД представляет собой гибкую и практичную систему с поддержкой графических интерфейсов. Она часто применяется в разработке контента. Через Python тоже.
Минусы
Обратите внимание на то, что у Питона имеется поддержка самых разных СУБД. MySQL не является единственным доступным вариантом. Эта система обладает не только преимуществами, но и рядом недостатков, о которых должен знать каждый разработчик.
Среди таковых выделяют:
- ограниченные функциональные возможности (пример – отсутствие вложенных запросов);
- стоимость – полная техподдержка предоставляется только платно, а бесплатный вариант сильно ограничен «по умолчанию»;
- затраты на ПО – для того, чтобы работать с СУБД, придется иметь мощный сервер и компьютер;
- преобразования – MySQL быстро блокирует таблицы, из-за чего в больших «перечнях» приходится использовать конвертацию;
- последствия при выходе из строя – восстановить данные при критических сбоях и неполадках программного кода в этой СУБД довольно тяжело.
Зато MySQL предусматривает высокий уровень безопасности и отсутствие противоречивости информации. Обработка электронных материалов здесь ведется совместно. Есть службы резервного копирования, развитые на достойном уровне.
SQLite – что это
SQLite – быстрая и легко встраиваемая однофайловая система управления базами данных. Написана на языке C. Не имеет серверов, что позволяет хранить БД в пределах одного устройства локально. Сторонние библиотеки и службы для того, чтобы пользоваться оной, не пригодятся.
СУБД не будет применять при своем функционировании парадигму клиент-серверной модели. SQLite – это не самостоятельный движок, а своеобразная библиотека для обработки данных и их массивов. Компонуется совместно с написанным приложением. В виде протокола обмена данными задействованы вызовы функций (API) библиотеки SQLite.
SQLite3 – определение
SQLite3 – консольное программное обеспечение для работы с SQLite. Запуск и работа производятся в командной строке, консоли ОС. Совместима с Windows, MacOS и Linux.
Предусматривает такие особенности:
- представление в виде клиента для клиент-серверных утилит;
- позволяет вводить и передавать разные запросы к базе данных;
- обращение происходит не к отдельному процессу-серверу, а ко всему встроенному в софт движку SQLite.
В QSLite3 можно вписать SQL-код. Тогда ПО будет отправлять запросы к ядру, после чего получит и сможет вывести на экран результат.
Преимущества и недостатки
Использование той или иной СУБД должно быть обоснованным. Поэтому о каждом варианте требуется знать максимально точную информацию. У SQL есть плюсы и минусы, способные как облегчить написание ПО на Python, так и сделать процесс труднее.
Сильные стороны
К плюсам этой СУБД относят:
- быстродействие;
- хранение информации в одном документе;
- минимализм;
- надежную систему защиты;
- нулевые конфигурации;
- небольшой размер;
- высокий уровень доступности – находится в свободном доступе;
- кроссплатформенность;
- автономное функционирование.
Это – отличный вариант для начала знакомства с БД и их внедрением в программное обеспечение.
Слабые стороны
Минусы у этой СУБД такие:
- ограничения в поддержке типов данных;
- хранимых процедур нет;
- ограниченность в применении;
- бесплатной поддержки нет.
Профессиональная поддержка от разработчиков обойдется в сумму от 1 500 долларов США в год. Бесплатно пользоваться SQL придется при помощи туториалов и разнообразной документации.
Питон и БД
Python может работать с самыми разными СУБД. Часто для разработки применяется MySQL, а также SQLite. Второй вариант поддерживается системой по умолчанию, поэтому пользоваться им проще. Упор лучше сделать на MySQL, но он не совместим с 3 версией ЯП. Вместо популярного модуля MySQLdb нужно применить PyMySQL.
Это – интерфейс, гарантирующий соединение с базой данных MySQL из Питона. Реализует APIБД Python 2.0. Включает в себя чистую клиентскую библиотеку СУБД. Ключевая цель PyMySQL – это быстрая замена MySQLdb.
Инициализация
Перед началом работы нужно убедиться в том, что рассматриваемая библиотека установлена на задействованном устройстве. В случае отсутствия таковой – провести ее инициализацию.
В скрипте Питона нужно набрать код и обработать его:
#!/usr/bin/python3
import pymysql
Далее все зависит от ситуации. Существуют разные варианты. Иногда необходимый компонент уже есть на устройстве. Тогда пользователь увидит соответствующее сообщение. Если модуль MySQL отсутствует, на экране появится такая запись:
Traceback (most recent call last):
File "test.py", line 3, in <module>
Import pymysql
ImportError: No module named pymysql
Для того, чтобы инициализировать библиотеку, потребуется выполнить команду:
pip install pymysql
Если Pip не доступен, можно осуществить загрузку с GitHub и провести инициализацию с Setuptools. Вот примеры команд:
Для успешного выполнения команды предстоит выполнять все перечисленные операции через права суперпользователя.
Подключение к БД
Использоваться сведения из БД смогут только после непосредственного подключения «таблицы с информацией» к приложению Питона. Перед тем, как устанавливать соединение, требуется убедиться в то, что:
- была создана подходящая база данных – Test DB;
- есть таблица Employee в оной;
- присутствуют поля first_name, last_name, age, income, sex;
- для доступа к БД установлено имя testuser, а также пароль test123;
- на устройстве есть PyMySQL.
Далее будут рассмотрены примеры работ, базирующиеся на БД Test. Чтобы грамотно управлять информацией в приложении, предстоит предварительно разобраться с основами MySQL.
Вот пример соединения:
Он при запуске выдаст надпись с версией БД. Если соединение с источником провелось успешно, объект коннектинга вернется и будет сохранен в БД. Его можно задействовать позже. В противном случае для базы данных устанавливается значение НЕТ. Объект db применяется для создания объекта курсора (cursor). Последний позволяет выполнять запросы SQL. Перед выходом cursor будет гарантировать закрытость соединения с «хранилищем», а также освобождение ресурсов устройства.
Create Table отвечает за создание таблички.
Вставка
Следующая важная операция – это вставка. Операция insert позволяет создавать собственные записи и дополнения.
А вот так будет выглядеть динамическое создание SQL-запросов:
#!/usr/bin/python3
import pymysql
# Open database connection
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Prepare SQL query to INSERT a record into the database.
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
LAST_NAME, AGE, SEX, INCOME) \
VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
('Mac', 'Mohan', 20, 'M', 2000)
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
db.rollback()
# disconnect from server
db.close()
А вот еще один наглядный пример того, как выполняется передача параметров напрямую:
Чтение
Здесь нужно учесть следующее:
- Чтение отвечает за получение полезной информации из «таблицы».
- Может применяться сразу после соединения с базой данных.
- Допустимо использование любых доступных методов: fetchone() или fetchall().
Стоит обратить внимание на несколько ключевых моментов:
- Fetchone – извлекает следующую строку из набора результатов заданного запроса. Результирующий набор – объект, который возвращает система после того, как cursor был применен для запроса table.
- Fetchall – извлекает все строки в результирующем наборе. Если какие-то строчки уже были «прочитаны», система «заберет» то, что осталось.
- Rowcount – атрибут, который предназначается для чтения. Возвращает количество строк, на которые ранее действовал метод execute.
При помощи метода close завершается работа с db.
Выше – пример того, как происходит запрос с заработной платой работников выше 1 000 единиц.
Обновление
При использовании Python в работе с MySQL, нужно знать много разнообразных операций и операторов. Есть обновление. Оно отвечает за ввод новых данных в одну или несколько записей.
Вот пример того, как происходит замена пола с буквой «М». Кодификация будет увеличивать на год возраст:
Удаление
Если оператор DELETE будет передан системе, он сотрет записи из хранилища информации. Ниже – пример команды, которая в Python при помощи MySQLCommands убирает все записи работников, возраст которых составляет более 20 лет.
Транзакции
Когда стало понятно, что такое cursor, за что отвечает print, а также как выполнять основные действия с табличками, можно взяться за транзакции. Они представлены механизмами, которые отвечают за согласованной данных. Предусматривают несколько свойств:
- Атомарность. Любая транзакция или завершена, или ничего не происходит.
- Согласованность. Операция должна начинаться в заранее согласованном состоянии. Результат – тоже в таком же «положении».
- Изоляция. Промежуточные результаты не будут видны за пределами операции.
- Долговечность. После того, как транзакция завершится, последствия сохраняются. Принцип распространяется даже при системных сбоях и неполадках.
У API Питона 2.0 есть два метода для фиксации и отката транзакций.
Commit – это фиксация. Операция, которая передает «зеленый сигнал» базе для завершения изменений. После нее никакие корректировки не допускаются. Они просто фиксируются.
Rollback – отвечает за полную отмену внесенных корректировок. Для отключения «хранилища» используйте метод close. При его активации все незавершенные транзакции будут откатываться.
Ошибки и их обработка
При использовании cursor и других возможностей, могут возникать разного рода ошибки. Примеры: синтаксис в операторе, сбой соединения, вызов метода выборки для завершенного дескриптора.
Через API можно определить количество ошибок. Они будут существовать в пределах каждого модуля «таблички». Ниже указаны исключения.
Вся перечисленная информация о cursor, а также СУБД пригодится при коддинге на Python. Особенно тогда, когда планируется написание клиент-серверной утилиты.
Основы работы с SQLite3
Для начала работы с SQLite3 в Питоне нужно провести импорт соответствующего модуля, а затем создать объект коннектинга к базе. Сделать это можно так:
Cursor в SQLite3
Cursor – это элемент, без которого невозможно продолжить работу. Представляет собой метод соединения. Сначала устанавливается коннектинг, после чего происходит создание cursor с применением объекта соединения.
Выше – наглядный пример контактирования с cursor.
Создание
После того, как с cursor стало все ясно, третьей важной операцией выступает создание «табличного хранилища»:
Здесь будет происходить следующее:
- Импортируется модуль SQLite3.
- Осуществляется определение функции с именем sql_connection.
- Внутри оной будет установлен блок try, в котором метод connect() вернет объект соединения после коннектинга.
- Определяется блок исключений. При наличии оных осуществляется вывод на печать сообщения об ошибке.
- Когда неполадки отсутствуют, соединение устанавливается. Скрипт сообщит об успешном подключении к памяти.
Теперь соединение блока finally будет закрыто. Это не обязательный шаг. Он просто помогает освобождать память устройства.
Здесь можно увидеть, как на SQLite происходит создание базы в Питоне.
Как быстрее понять тему
Примеры Python с MySQL уже были рассмотрены. К моменту написания собственного кода программер должен изучить оператор select и другие действия в пределах табличек, а также разбираться в принципах функционирования cursor.
Чтобы быстрее вникнуть в тему, существуют три способа получения информации:
- Обучение в ВУЗе. На информационных направлениях часто изучают рассмотренную тему.
- Самообразование. Не самый лучший вариант для тех, кто хочет получить документальное подтверждение знаний. Зато он помогает начинать с нуля и учиться, когда удобно.
- Посещение онлайн курсов. Самый верный и надежный прием. Позволяет получить практику и новые полезные знакомства. В конце программы будет выдан электронный сертификат установленного образца.
Все эти методы помогут лучше разобраться в if, where, for row in и других моментах программирования.