Автор оригинала: Robin Andrews.
Работа с базами данных – это фундаментальный навык развития программного обеспечения. В этой статье мы посмотрим, как работать с базами данных в Python, используя SQLite Отказ SQLite – это библиотека, которая предоставляет легкую, автономную базу данных, которая хранит данные как простой файл без необходимости в архитектуре клиент-сервер. Это означает, что вы можете легко написать программы, которые требуют базы данных с минимальной настройкой.
SQL обозначает Язык структурированного запроса и используется для связи с базами данных. Многие вкусы SQL существуют, но есть много сходства между наиболее распространенными версиями. Команды, используемые SQLite, очень похожи на те, которые используются другими версиями, и будет легко адаптироваться, если вам нужно позже.
Вы можете начать работу с SQLite в Python без каких-либо настроек, так как SQLite поставляется как стандартно с установкой Python (на момент написания, текущей версии 3.8). Однако для того, чтобы действительно понять, что происходит, когда вы изучаете SQL, это помогает иметь способ визуализации и взаимодействия с вашими данными с использованием графического интерфейса пользователя (GUI). Отличный доступный Здесь: Браузер БД для SQLite. Вы загружаетесь и установите его сейчас, если хотите следовать вместе с этой статьей.
Чтобы работать с SQL в Python, вам нужно изучать две разные темы. Первый – это основы баз данных и SQL. Тогда есть как работать с этим в Python.
В этой статье мы посмотрим на некоторые основные SQL, чтобы установить сцену для взаимодействия с базой данных с помощью Python. Затем мы сделаем старт на работе с SQL через Python.
Создание таблицы с SQLite
Использование Браузер БД для SQLite Создайте новую базу данных из Файл Меню и назовите это Cards.db Отказ Сохраните его где угодно, вы найдете удобно.
Теперь перейти на вкладку, помеченную Выполнить SQL И вставьте/вставить в следующие команды SQL (ввод сделает вас лучше):
CREATE TABLE cards ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, suit TEXT, suit_symbol TEXT, score INTEGER );
Это создаст структуру для стола, где будет хранить представление колоды игральных карт.
Вы должны увидеть следующее сообщение:
Добавление данных в таблицу SQLite
Теперь мы добавим данные для палубы игральных карт в таблицу, которую мы только что создали. Вернитесь к Выполнить SQL Вкладка, выберите и удалите, что там уже есть и вместо вставки следующие команды SQL:
INSERT INTO cards (name, suit, suit_symbol, score) VALUES
-- Spades
('A', 'spades', '♠', 1),
('2', 'spades', '♠', 2),
('3', 'spades', '♠', 3),
('4', 'spades', '♠', 4),
('5', 'spades', '♠', 5),
('6', 'spades', '♠', 6),
('7', 'spades', '♠', 7),
('8', 'spades', '♠', 8),
('9', 'spades', '♠', 9),
('10', 'spades', '♠', 10),
('J', 'spades', '♠', 11),
('Q', 'spades', '♠', 12),
('K', 'spades', '♠', 13),
-- Hearts
('A', 'hearts', '♥', 1),
('2', 'hearts', '♥', 2),
('3', 'hearts', '♥', 3),
('4', 'hearts', '♥', 4),
('5', 'hearts', '♥', 5),
('6', 'hearts', '♥', 6),
('7', 'hearts', '♥', 7),
('8', 'hearts', '♥', 8),
('9', 'hearts', '♥', 9),
('10', 'hearts', '♥', 10),
('J', 'hearts', '♥', 11),
('Q', 'hearts', '♥', 12),
('K', 'hearts', '♥', 13),
-- Clubs
('A', 'clubs', '♣', 1),
('2', 'clubs', '♣', 2),
('3', 'clubs', '♣', 3),
('4', 'clubs', '♣', 4),
('5', 'clubs', '♣', 5),
('6', 'clubs', '♣', 6),
('7', 'clubs', '♣', 7),
('8', 'clubs', '♣', 8),
('9', 'clubs', '♣', 9),
('10', 'clubs', '♣', 10),
('J', 'clubs', '♣', 11),
('Q', 'clubs', '♣', 12),
('K', 'clubs', '♣', 13),
-- Diamonds
('A', 'diamonds', '♦', 1),
('2', 'diamonds', '♦', 2),
('3', 'diamonds', '♦', 3),
('4', 'diamonds', '♦', 4),
('5', 'diamonds', '♦', 5),
('6', 'diamonds', '♦', 6),
('7', 'diamonds', '♦', 7),
('8', 'diamonds', '♦', 8),
('9', 'diamonds', '♦', 9),
('10', 'diamonds', '♦', 10),
('J', 'diamonds', '♦', 11),
('Q', 'diamonds', '♦', 12),
('K', 'diamonds', '♦', 13);
Это использовало Вставить SQL Command поставить данные в карты Таблица. На этом этапе вам не нужно слишком беспокоиться о синтаксисе, но просто почувствовать большую картину.
Несколько очков для наблюдения являются:
Вставить в карты (имя, костюм, Suit_symbol, оценка) Значения ...делает более или менее то, что он говорит о жере.Имя,КостюмETC внутри кронштейнов – это атрибуты, в которые будут храниться значения, поэтомуАдляИмя,бриллиантыдляКостюми т.п.- Заявления SQL должны закончиться
; - Комментарии в
SQLсозданы с использованием-Итак,- бриллиантыэто комментарий, на благо людей.
Просмотр данных в браузере БД для SQLite
Теперь, когда у вас есть некоторые данные в вашей базе данных, вы можете исследовать его, используя Обзор данных вкладка
Выбор данных из базы данных с SQLite
Теперь, когда у вас есть база данных с некоторыми данными, вы можете использовать Выберите Заявление для запроса вашей базы данных для получения результатов на основе конкретных критериев. Например, в вкладке «Выполнить SQL» запустите следующую команду:
Выберите * из карт, где;
Как видите, это выбирает все столбцы из карты Таблица для каждой строки, в которой Костюм это Сердца Отказ
Вы можете быть более конкретными, а вместо того, чтобы выбрать все поля, вы можете выбрать определенные поля. Например
Выберите Suite_symbol, оценка от карт, где;
дает только Suit_symbol и Оценка Для каждого из строк он находит, где Костюм это Сердца Отказ
Одна вещь, которая может вызвать путаницу при первом изучении баз данных, является терминология. Есть довольно много терминов и концепций, чтобы учиться, но на данный момент пара решающих вам нужно:
- Атрибут – свойство или аспект вещи, хранящегося в таблице базы данных
- Поле – пространство (подумайте о ячейке в электронной таблице) внутри таблицы базы данных, где хранится атрибут
- Запись – представлена строкой в таблице базы данных и состоящая из полей, представляющих атрибуты этой записи
Обратите внимание, что Записи представлены полными рядами, а атрибуты Представляются «ячейками» (если мы визуализируем таблицы базы данных как аналогичные таблицы), а имя атрибута похоже на заголовок столбца.
Вам нужно будет получить много практики с основными операторами SQL для того, чтобы стать опытным. Одно отличное место, чтобы получить эту практику, это SQLBOLT Отказ Я настоятельно рекомендую вам работать через первые несколько страниц на этом сайте.
Использование Python для взаимодействия с базой данных SQLite
Хорошо, теперь давайте напишем какой-нибудь код Python. Сначала удалите базу данных, которую вы только что сделали, называемые Cards.db Отказ Очевидно, что когда вы работаете с важными данными, вы захотите быть менее агрессивными, а также серьезно относиться к Резервное копирование вашей базы данных , но на данный момент мы просто учимся, так что иду вперед …
Теперь мы посмотрим, как сделать все, что мы просто использовали Python, чтобы взаимодействовать с базой данных. Поэтому начните вашу любимую среду разработки Python, создайте новый файл под названием карты , и введите/вставьте (вероятно, некоторые разумные комбинации из них лучше всего здесь) следующий код, а затем запустить его.
import sqlite3
con = sqlite3.connect("cards.db")
cur = con.cursor()
cur.execute("""
CREATE TABLE IF NOT EXISTS cards (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
suit TEXT,
suit_symbol TEXT,
score INTEGER
);""")
cur.execute("""
INSERT INTO cards (name, suit, suit_symbol, score) VALUES
-- Spades
('A', 'spades', '♠', 1),
('2', 'spades', '♠', 2),
('3', 'spades', '♠', 3),
('4', 'spades', '♠', 4),
('5', 'spades', '♠', 5),
('6', 'spades', '♠', 6),
('7', 'spades', '♠', 7),
('8', 'spades', '♠', 8),
('9', 'spades', '♠', 9),
('10', 'spades', '♠', 10),
('J', 'spades', '♠', 11),
('Q', 'spades', '♠', 12),
('K', 'spades', '♠', 13),
-- Hearts
('A', 'hearts', '♥', 1),
('2', 'hearts', '♥', 2),
('3', 'hearts', '♥', 3),
('4', 'hearts', '♥', 4),
('5', 'hearts', '♥', 5),
('6', 'hearts', '♥', 6),
('7', 'hearts', '♥', 7),
('8', 'hearts', '♥', 8),
('9', 'hearts', '♥', 9),
('10', 'hearts', '♥', 10),
('J', 'hearts', '♥', 11),
('Q', 'hearts', '♥', 12),
('K', 'hearts', '♥', 13),
-- Clubs
('A', 'clubs', '♣', 1),
('2', 'clubs', '♣', 2),
('3', 'clubs', '♣', 3),
('4', 'clubs', '♣', 4),
('5', 'clubs', '♣', 5),
('6', 'clubs', '♣', 6),
('7', 'clubs', '♣', 7),
('8', 'clubs', '♣', 8),
('9', 'clubs', '♣', 9),
('10', 'clubs', '♣', 10),
('J', 'clubs', '♣', 11),
('Q', 'clubs', '♣', 12),
('K', 'clubs', '♣', 13),
-- Diamonds
('A', 'diamonds', '♦', 1),
('2', 'diamonds', '♦', 2),
('3', 'diamonds', '♦', 3),
('4', 'diamonds', '♦', 4),
('5', 'diamonds', '♦', 5),
('6', 'diamonds', '♦', 6),
('7', 'diamonds', '♦', 7),
('8', 'diamonds', '♦', 8),
('9', 'diamonds', '♦', 9),
('10', 'diamonds', '♦', 10),
('J', 'diamonds', '♦', 11),
('Q', 'diamonds', '♦', 12),
('K', 'diamonds', '♦', 13);""")
cur.execute("SELECT * FROM cards WHERE suit = 'hearts'")
print(cur.fetchone()) # Print just the first row
print()
print(cur.fetchall()) # Print all rows
con.commit()
con.close()
Выход:
(14, 'A', 'hearts', '♥', 1) [(15, '2', 'hearts', '♥', 2), (16, '3', 'hearts', '♥', 3), (17, '4', 'hearts', '♥', 4), (18, '5', 'hearts', '♥', 5), (19, '6', 'hearts', '♥', 6), (20, '7', 'hearts', '♥', 7), (21, '8', 'hearts', '♥', 8), (22, '9', 'hearts', '♥', 9), (23, '10', 'hearts', '♥', 10), (24, 'J', 'hearts', '♥', 11), (25, 'Q', 'hearts', '♥', 12), (26, 'K', 'hearts', '♥', 13), (66, 'A', 'hearts', '♥', 1), (67, '2', 'hearts', '♥', 2), (68, '3', 'hearts', '♥', 3), (69, '4', 'hearts', '♥', 4), (70, '5', 'hearts', '♥', 5), (71, '6', 'hearts', '♥', 6), (72, '7', 'hearts', '♥', 7), (73, '8', 'hearts', '♥', 8), (74, '9', 'hearts', '♥', 9), (75, '10', 'hearts', '♥', 10), (76, 'J', 'hearts', '♥', 11), (77, 'Q', 'hearts', '♥', 12), (78, 'K', 'hearts', '♥', 13), (118, 'A', 'hearts', '♥', 1), (119, '2', 'hearts', '♥', 2), (120, '3', 'hearts', '♥', 3), (121, '4', 'hearts', '♥', 4), (122, '5', 'hearts', '♥', 5), (123, '6', 'hearts', '♥', 6), (124, '7', 'hearts', '♥', 7), (125, '8', 'hearts', '♥', 8), (126, '9', 'hearts', '♥', 9), (127, '10', 'hearts', '♥', 10), (128, 'J', 'hearts', '♥', 11), (129, 'Q', 'hearts', '♥', 12), (130, 'K', 'hearts', '♥', 13), (170, 'A', 'hearts', '♥', 1), (171, '2', 'hearts', '♥', 2), (172, '3', 'hearts', '♥', 3), (173, '4', 'hearts', '♥', 4), (174, '5', 'hearts', '♥', 5), (175, '6', 'hearts', '♥', 6), (176, '7', 'hearts', '♥', 7), (177, '8', 'hearts', '♥', 8), (178, '9', 'hearts', '♥', 9), (179, '10', 'hearts', '♥', 10), (180, 'J', 'hearts', '♥', 11), (181, 'Q', 'hearts', '♥', 12), (182, 'K', 'hearts', '♥', 13)]
Несколько замечаний по поводу вышеуказанного кода:
con.connect ("Cards.db")Создает базу данных в текущей папке, если она еще не существует, и установлено соединение.CUR.CURSOR ()создает Курсор , который можно сравнить с головой чтения/записи на CD-считывателя/писателя- Многострочные комментарии (
"" "" "") используются для ввода блоков SQL Cur.fetchone ()иCur.fetchall() являются очень полезными командами для получения ваших данных из предыдущегоВыберитеутверждениеcon.commit ()совершает любые изменения в ваши данные. Часто это опущено, так как есть опция автоматического коммитата по умолчанию.- Мы подчиняемся после того, как сами заставляем соединение с базой данных с
con.close ()Отказ
Это было введение в SQLite и как его использовать с Python. Подробнее, чтобы учиться, но мы охватываем некоторые основные ингредиенты. Если вы последовали, вы должны быть в хорошей форме, чтобы сделать базовые операции с SQLite и Python, а также принять учебы работы с базами данных в Python на следующий уровень. Посмотрите на следующую статью в этой серии.
Счастливые вычисления!