Управление базой данных Python для начинающих

Недавно я написал статью об основных командах SQL, которую вы можете найти здесь. В нем я писал о различных запросах, которые вы можете использовать, о том, как создавать и удалять строки, и даже о том, как изменять таблицы и удалять их из существования. Но я упустил очень важный шаг.

Где можно использовать эти команды SQL?

Поэтому я решил исправить это с помощью Python API, который имитирует функциональность SQL. Python входит в стандартную комплектацию SQLite, а это значит, что вам не нужно ничего устанавливать, просто импортируйте пакеты. Эта версия системы SQL (с термином «lite» в названии) не предназначена для гигантских баз данных - ее лучше оставить для агентов SQL полного пакета, таких как MySQL или Oracle. Однако это отличный способ работы с базами данных, которые могут вам понадобиться для личных проектов, и даже для отработки SQL-запросов без необходимости загружать / оплачивать какие-либо из более тяжелых SQL-систем.

Если вы здесь, я предполагаю, что у вас есть некоторые базовые представления о Python и импорте пакетов. Во-первых, мы начнем с двух необходимых нам пакетов. SQLite для запросов к базам данных, которые мы собираемся создать / использовать, и Pandas для хранения найденных данных.

В приведенном ниже коде sqlite3 - это API (интерфейс прикладного программирования), который позволит нам общаться с базой данных.

Теперь у нас есть наши пакеты, готовые к использованию. Мы хотим создать соединение с базами данных, которые мы в конечном итоге создаем, поэтому мы устанавливаем это соединение с помощью пакета sqlite3. Во-первых, мы хотим установить соединение с базой данных. Это также дает дополнительное преимущество в виде создания пустой базы данных.

В приведенном выше коде я установил соединение и создал новую базу данных с именем test_db. Обратите внимание на тип файла test_db. Новый файл ‘.db’ - это тип файла, который эта версия SQL должна запрашивать. Кроме того, переменная «q» теперь используется как курсор для команды SQL. Все будет проходить через ‘q’.

Чтобы использовать этот API, мы должны понимать, что в API есть две основные концепции: «объекты подключения» и «объекты запроса».

  • Объекты подключения используются для подключения к базе данных и управления любыми изменениями в базе данных.
  • Объекты запроса чаще рассматриваются как объекты курсора. Они позволяют нам запускать запросы в базе данных.

Далее идут сами базы данных. Поскольку это вводная статья для SQL в Python, мы ограничимся одним из двух способов.

  1. Создание таблицы с нуля и запросы к ней

Or

2. Использование установленного источника данных (например, CSV) и внесение его в нашу таблицу.

Давайте сначала создадим нашу собственную базу данных.

Создать таблицу с нуля

Поскольку предыдущий код установил соединение и создал пустую базу данных, нам просто нужно создать таблицу. Мы делаем это с помощью курсора, который мы создали в предыдущем тексте кода.

Первое, что мы делаем, это вызываем метод execute, он работает вне метода курсора и позволяет нам работать с базой данных. Ниже мы видим, что наша работа включает в себя создание таблицы. Метод execute выполняет поставленную нами задачу.

После выполнения этой команды у нас есть рабочая, хотя и пустая таблица, готовая для запросов SQL. Далее нам просто нужно его заполнить.

Когда мы заполняем таблицу, мы вводим новую команду. Используя метод commit, мы берем изменения, внесенные с помощью метода execute, и делаем их постоянными. Используя соединение, которое мы установили с базой данных, мы хотим иметь возможность фиксировать изменения в таблице. Каждый раз, когда мы добавляем, обновляем или удаляем информацию из таблицы, мы должны зафиксировать изменения, чтобы они были постоянными.

Метод commit должен использоваться каждый раз, когда таблица каким-либо образом изменяется. Поэтому в любое время, когда я добавляю в таблицу, удаляю из таблицы или изменяю запись в таблице, я должен зафиксировать изменение с помощью метода commit.

Это изменение теперь является частью таблицы навсегда. Теперь переходим к использованию данных из уже сформированного CSV.

Использование подготовленных данных

Вместо того, чтобы создавать таблицу с нуля и заполнять ее нашими пользовательскими данными, мы можем вызвать тип файла, например CSV, который уже табулирован и заполнен данными. Синтаксис SQL легче писать и расшифровывать, и он может быть полезен при поиске записей в больших наборах данных.

Мы загрузим набор данных Titanic из наборов данных Seaborn и превратим его в переменную. Оттуда мы превратим его в базу данных SQL, подключенную к нашему API.

Теперь у нас есть недавно созданная база данных с таблицей titanic в ней.

Мы узнали два способа создания базы данных и таблицы, давайте поговорим о запросе информации.

Запрос данных

Прежде всего, это структура кода запроса.

Первая часть - где я устанавливаю запрос, равный переменной с именем query -, позволяет мне программно кодировать запрос и иметь возможность изменять его без особых хлопот.

Последний метод - это метод fetchall. Он используется на этапе запроса, когда вы хотите получить всю информацию, для которой вы написали запрос. Как видно из приведенного выше кода, метод fetchall используется сложенным с методом execute. Это означает, что запрос выполняется и метод fetchall возвращает результаты для проверки пользователем.

Вот и все, что нужно сделать. Но мы еще не закончили - судя по всему. Давайте сначала посмотрим на наши результаты.

База данных SQL в Pandas Dataframe

Запустив приведенный выше код, мы получаем следующее:

Мы могли бы это прочитать, если бы достаточно постарались. Но чем больше данных, тем больше и больше запутанных данных. Итак, давайте поместим его во фрейм данных Pandas. Следующий код помещает запрос в формат фрейма данных Panda.

Первая часть ясна - захватите метод fetchall и поместите результаты во фрейм данных Pandas. Это дает нам структуру, к которой мы привыкли, и мы можем читать ее как таблицу, а не как длинный список.

Вторая строка кода важна. Без кода результаты будут выглядеть примерно так:

Это никому не поможет. Понимание списка во второй строке кода выбирает имя столбца для каждого столбца и применяет его к фрейму данных. Если мы пройдем лишнюю милю, мы получим следующие результаты:

Без названий столбцов столбец «пол» было бы легко понять, но просмотр столбца «pclass» вызвал бы путаницу.

Теперь у вас есть основы, вы можете выходить из себя, задавая вопросы, и практиковать все, что хотите. Но последнее, что я хочу вам показать, это как закрыть соединение. Вы должны закрыть и курсор, и соединение, ради вашего компьютера.

Вот и все. Это все, что я запланировал на этот урок.

Обзорная сессия!

Резюме (что мы узнали)

  1. Нам нужно импортировать SQL API sqlite, Pandas и дополнительный набор данных из Seaborn.
  2. Изученные нами методы включают в себя установление соединения, создание экземпляра объекта курсора, выполнение команды (изменение таблицы или запрос данных) и получение результатов.
  3. Создание базы данных и таблицы с нуля. Заполняем его нашими собственными данными.
  4. Загрузка CSV и преобразование его в базу данных / таблицу SQL для упрощения запросов
  5. Запрос таблицы и просмотр результатов
  6. Загрузка результатов во фрейм данных Pandas для удобного просмотра
  7. Добавление названий столбцов от курсора для удобства

Чтобы узнать больше о командах SQL, ознакомьтесь с другой моей статьей, в которой я расскажу об основах SQL.



Если вы хотите связаться со мной, вы можете сделать это здесь, в LinkedIn.

Вы также можете посмотреть мой проект здесь, на Github.