Лучшие SQL-запросы в Python, которые должен знать каждый разработчик Python
Опубликовано: 2021-01-29SQL означает язык структурированных запросов, который помогает управлять, манипулировать и хранить реляционные базы данных. Реляционная база данных состоит из наборов таблиц, которые связаны в той или иной форме. Несколько таблиц позволяют нам разделять различные объекты целевой информации и избегать объединения сотен столбцов в одну таблицу, что может затруднить управление базой данных.
Это язык запросов, а не сама база данных. Эти запросы могут выполняться в любой системе управления реляционными базами данных, такой как Oracle, Microsoft SQL Server, но существует питонический подход к созданию и выполнению запросов SQL.
Оглавление
SQLite3
Это встроенная библиотека Python, которая позволяет нам создавать облегченную базу данных без необходимости запуска реальной модели клиент-сервер. Он может использоваться внутри приложений для хранения данных и выполнения команд SQL. Пакет прост в использовании и позволяет реплицировать одну и ту же схему в любой производственной базе данных, такой как Postgresql. Давайте посмотрим, как настроить базу данных.
- Стандартный оператор импорта:
импортировать sqlite3 как sq
Библиотека импортируется как псевдоним «sq».
- Теперь нам нужно создать подключение к базе данных. Объект подключения будет служить этой цели:
соединение = sq.connect("пример.db")
Если этот файл не был создан ранее, то он будет создан сразу после выполнения этой команды.
- Для доступа и получения информации из базы данных необходимо создать объект курсора.
курсор = соединение.курсор()
Теперь, когда базовая настройка выполнена, мы можем отправить данные в базу данных, создав соответствующие таблицы, но перед этим давайте пересмотрим некоторые команды SQL.
Основные команды в SQL
SQL превосходен с точки зрения читаемых на английском языке команд. Обычно они печатаются в верхнем регистре, и на это нет никаких ограничений. Обычно это практикуется для того, чтобы ключевые слова запроса выделялись, и их можно было отличить от атрибутов таблицы. Но поскольку сейчас у нас есть мощные IDE, которые выделяют их другим цветом, подойдет любой метод.
1. Создать таблицу
Это позволяет вам создавать объекты хранения данных, таблицы в вашей базе данных. В базе данных может быть много таблиц с одним или несколькими отношениями. В таблицах есть заголовки для каждого столбца, описывающие значение, которое он содержит. При создании таблицы вам необходимо указать имя столбца, тип данных, которые он будет содержать, и размер. Вы можете добавить другие атрибуты, например, если столбец является первичным ключом, может иметь нулевые значения и т. д.
Базовая таблица может быть создана как:
СОЗДАТЬ ТАБЛИЦУ company_data (
идентификатор инт,
имя варчар (24),
no_of_employee целое число
);
2. ВЫБЕРИТЕ и ОТ
Как следует из названия, он используется для выбора и извлечения данных из таблиц. Это первый шаг, который позволит вам взглянуть на данные. Это похоже на функцию головы или хвоста Pandas.
Простой запрос с использованием этих команд будет выглядеть так:
ВЫБЕРИТЕ <имя_столбца(ов)>
ОТ <имя_таблицы>;
Чтобы получить все столбцы из таблицы, вы можете поставить звездочку (*) вместо всех имен столбцов. Ключевое слово LIMIT помогает определить максимальное количество строк. Рассмотрим этот запрос:
ВЫБРАТЬ *
ИЗ примера_таблицы
ПРЕДЕЛ 5;
3. Где
Предложение where используется для указания дополнительных условий запроса. Вы можете включить диапазон для столбцов, любое конкретное сравнение или отрицание.
Например:
ВЫБЕРИТЕ client_name, company_name
ОТ company_data
ГДЕ company_name = 'upGrad';
4. Вставьте
Это предложение используется для добавления значений в таблицы данных. Значения вставляются в том же порядке, в котором имена столбцов добавляются в таблицу в команде создания таблицы. Можно вставлять несколько строк или по одной за раз.
Например, следующий запрос вставляет в таблицу 3 записи:
INSERT INTO company_data (id, name, no_of_employees)
ЗНАЧЕНИЯ
(1, 'компания_А', 100),
(2, "компания_Б", 200),
(3, 'компания_С', 500);
Выполнение через Python
Теперь, когда вы знаете о командах, пришло время выполнить их в коде. Пока что мы подключились к базе данных и создали объект курсора. Этот объект поможет в выполнении команд в базе данных:

курсор.execute(''' <ЗАПРОС> ''')
Запрос передается в виде строки и в тройных кавычках. Это изменение не будет отражено в базе данных, пока вы не зафиксируете это изменение. Закрытие соединения с базой данных в конце гарантирует, что после этого момента новые выполнения выполняться не будут.
Посмотрите на этот простой код:
импортировать sqlite3 как sq
соединение = sq.connect("пример.db")
курсор = соединение.курсор()
курсор.выполнить(”'
СОЗДАТЬ ТАБЛИЦУ table1 (
идентификатор инт,
имя варчар (24)
)
”’)
курсор.выполнить(”'
ВСТАВИТЬ В таблицу1 (идентификатор, имя)
ЗНАЧЕНИЯ
(1, «обновление»),
(2, «блоги»)
”’)
курсор.выполнить(”'
ВЫБРАТЬ *
ИЗ таблицы1
”’)
соединение.коммит()
соединение.закрыть()
Важные советы
1. Поскольку запросы передаются в виде строк, изменение их с помощью f-строки может показаться хорошим вариантом для того, чтобы сделать программу динамичной и управляемой пользователем, но это может вызвать некоторые проблемы с безопасностью, такие как атаки путем внедрения кода SQL. Чтобы избежать этого, используйте заполнитель «?» везде, где вы хотите заменить некоторые значения в запросе. Например:
cursor.execute('"SELECT? FROM?''', col_name, table_name)
Вы можете попросить пользователя указать имя столбца, и это значение будет заменено здесь.
2. Используйте такие функции, как fetchone() и fetchall(), для перебора результатов. Fetchone возвращает следующую строку в запросе, а fetchall возвращает все строки, выбранные курсором. Результаты возвращаются в виде кортежа, поэтому они не могут быть изменены внешними функциями в программе.
3. Если вы хотите добавить массовые значения в базу данных, вы можете использовать функцию executemany() и передать список кортежей, содержащих добавляемые значения. Например:
to_add = [(1, 'привет') , (2, 'Мир')]
cursor.executemany('ВСТАВИТЬ В таблицу ЗНАЧЕНИЯ (?, ?)', to_add)
Читайте также: Идеи и темы проекта Python
Изучайте онлайн- курсы по науке о данных в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.
Заключение
SQL является наиболее предпочтительным языком баз данных и простым для понимания. Большинству новичков в науке о данных рекомендуется практиковаться в SQL, поскольку он улучшает процесс поиска данных и дает представление о том, как выполняется проектирование данных. Это стандартный язык для любых операций с базой данных, который обеспечивает более быстрый доступ к базе данных.
Если вам интересно узнать о науке о данных, ознакомьтесь с дипломом IIIT-B & upGrad PG в области науки о данных, который создан для работающих профессионалов и предлагает более 10 тематических исследований и проектов, практические семинары, наставничество с отраслевыми экспертами, 1- on-1 с отраслевыми наставниками, более 400 часов обучения и помощи в трудоустройстве в ведущих фирмах.
Ограничения определяют, какой тип данных будет введен в таблицу. Они задаются при создании таблицы и могут применяться к одному или нескольким полям. Ограничения в SQL: Индекс или индекс базы данных можно назвать специальной таблицей поиска, которая значительно ускоряет операцию поиска данных. Он потребляет больше памяти и дополнительных операций записи для более быстрого поиска данных. Индекс может быть 4 типов: Отношение между несколькими сущностями или несколькими материальными и нематериальными объектами, которые имеют какое-то отношение друг к другу, называется отношением. В SQL существует 4 типа отношений:Что вы знаете об ограничениях в SQL?
NOT NULL — запрещает ввод значения NULL в поле.
CHECK- Проверяет, все ли значения в поле удовлетворяют заданному условию.
ПО УМОЛЧАНИЮ — автоматически присваивает значение по умолчанию для поля, если значение не было введено.
UNIQUE — позволяет вводить в поле только уникальные значения.
ИНДЕКС — индексирует поле, обеспечивая более быстрый поиск записей.
ПЕРВИЧНЫЙ КЛЮЧ - Уникально идентифицирует каждую запись в таблице.
FOREIGN KEY — ограничивает действия, которые могут повредить связи между таблицами. Объясните индекс и его типы?
1. Уникальный индекс
2. Неуникальный индекс
3. Кластерный индекс Что такое отношения в SQL и каковы их типы?
1. Один на один
2. Один ко многим/многие к одному
3. Многие ко многим
4. Самореферентные отношения.