Рубрики
Без рубрики

Базы данных Python – SQLite Tutorial Part 1

Узнайте, как работать с базами данных в Python с помощью SQLite. SQLite – это легкая система управления базами данных для приложений Python.

Автор оригинала: 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 на следующий уровень. Посмотрите на следующую статью в этой серии.

Счастливые вычисления!