Как создать бд на python
Перейти к содержимому

Как создать бд на python

  • автор:

Шаг 4: Создание базы данных¶

Как было указано ранее, Flaskr это приложение с базой данных «под капотом», а если более точно, то приложение с системой на базе реляционной базы данных «под капотом». Такие системы нуждаются в схеме, которая сообщает им, как хранить информацию. Поэтому важно создать схему перед тем, как запустить в первый раз сервер.

Такая схема может быть создана с помощью перенаправления через канал (pipe) содержимого файла schema.sql команде sqlite3 следующим образом:

sqlite3 /tmp/flaskr.db  schema.sql 

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

Чтобы это сделать, мы можем создать функцию с именем init_db , которая инициализирует базу данных. Позвольте, я сперва покажу вам код. Просто добавьте в flaskr.py эту функцию после функции connect_db :

def init_db(): with app.app_context(): db = get_db() with app.open_resource('schema.sql', mode='r') as f: db.cursor().executescript(f.read()) db.commit() 

Итак, что же здесь происходит? Помните, как мы усваивали в предыдущем разделе, что контекст приложения создаётся всякий раз при появлении запроса? Здесь у нас пока ещё нет запроса, поэтому нам необходимо создать контекст приложения вручную. Без контекста приложения объект g не узнает, какому приложению он соответствует, ведь их может быть несколько!

Контекст приложения для нас устанавливает оператор with app.app_context() . В теле оператора with объект g будет проассоциирован с app . В конце оператора with ассоциация перестанет действовать, и будут запущены все функции разрыва контекста. Это значит, что после совершения действия соединение с базой данных будет разорвано.

Метод open_resource() объекта приложения является удобной функцией-помощником, которая откроет ресурс, обеспечиваемый приложением. Эта функция открывает файл из места расположения ресурсов (в нашем случае папка flaskr ), и позволяет вам из него читать. Мы используем её здесь для того, чтобы выполнить скрипт при установлении соединения с базой данных.

Объект соединения, который предоставляет SQLite может дать нам объект курсора. Для этого курсора существует метод для выполнения целого скрипта. В самом конце нам нужно лишь совершить (фиксировать) изменения. SQLite 3 и другие транзакционные базы данных не зафиксируют изменения, если вы явно об этом их не попросите.

Теперь мы можем из командной оболочки Python импортировать и вызвать эту функцию, тем самым создав базу данных:

>>> from flaskr import init_db >>> init_db() 

Поиск и устранение возможных проблем

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

Python Django | Урок 2 — Создание базы данных, введение в модели.

Как стать программистом? Python, Java, FrontEnd или .NET – что выбрать?

PyCharm с нуля. Лучшая IDE для Python разработки

Как составить резюме, чтобы вас пригласили на собеседование

Создаём игру-бестселлер Тетрис на Python

Как правильно составить резюме для поиска работы в международной IT-компании

Пишем игру Танки 2D на Pygame

Как новичкам найти работу во время войны? Реальный опыт и отзывы

Как стать Full Stack Python разработчиком

Базовые инструменты для анализа данных на Python

Это второй урок по курсу видео уроков Python Django. В этом уроке будет пример базовой настройки приложения, а так же создание и подключения приложения к базе данных. Посещайте видео блог ITVDN, где, несомненно, найдете для себя нужные и полезные уроки.

Покупай подписку с доступом ко всем курсам и сервисам

Библиотека современных IT знаний в удобном формате

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

  • Все видеокурсы на 3 месяца
  • Тестирование по 10 курсам
  • Проверка 5 домашних заданий
  • Консультация с тренером 30 мин
  • Все видеокурсы на 6 месяцев
  • Тестирование по 16 курсам
  • Проверка 10 домашних заданий
  • Консультация с тренером 60 мин
  • Все видеокурсы на 1 год
  • Тестирование по 24 курсам
  • Проверка 20 домашних заданий
  • Консультация с тренером 120 мин

Что такое базы данных и их роль в программировании на Python

Виртуальное окружение в разработке на языке Python

Моё мнение про Python

Основные аспекты изучения Python

Самые популярные библиотеки Python

Сергей Немчинский: Что пишут на Python? ПЛЮСЫ и МИНУСЫ Python

Базы данных (БД) — это структурированные наборы данных, организованные и хранимые с помощью специальных программ. Базы данных нужны для эффективного хранения, управления и доступа к информации, что делает их важной частью создания программ на Python и многих других языках.

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

Зачем программистам на Python нужны базы данных

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

  • Хранение данных
  • Управление данными
  • Поиск и извлечение данных
  • Согласование данных
  • Безопасность данных
  • Масштабируемость

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

Обзор баз данных, совместимых с Python

SQLite

SQLite — легкая, встроенная база данных, которая хранит все данные в одном файле без сервера. Она идеально подходит для простых приложений, которым не требуется высокая нагрузочная стойкость. Python поставляется с встроенной поддержкой SQLite, что делает его идеальным выбором для прототипирования и малых проектов.

MySQL

MySQL — это популярная реляционная база данных с открытым исходным кодом. С Python можно использовать MySQL с помощью различных библиотек, таких как `mysql-connector-python`, `PyMySQL` и `MySQLdb`. MySQL хорошо подходит для средних и крупных веб-приложений и может обслуживать большие объемы данных.

PostgreSQL

PostgreSQL — мощная реляционная база данных с акцентом на расширяемость и надежность. Существуют различные библиотеки для работы с PostgreSQL в Python, такие как `psycopg2` и `asyncpg` для асинхронной работы. PostgreSQL часто выбирают для проектов, которым требуется поддержка сложных запросов и расширяемость.

MongoDB

MongoDB — популярная NoSQL база данных, основанная на документах (JSON-подобные объекты). Для работы с MongoDB в Python существуют библиотеки, такие как `pymongo`. MongoDB хорошо подходит для проектов, которым необходима гибкая схема данных и возможность масштабирования горизонтально.

Redis

Redis — высокопроизводительная система хранения данных в памяти. Redis предоставляет удобные структуры данных, такие как строки, списки, хэши, множества и сортированные множества. Для работы с Redis в Python существует библиотека `redis`. Redis широко используется для кэширования и быстрого доступа к данным.

Oracle

Oracle — мощная реляционная база данных, широко применяемая в корпоративных средах. Для работы с Oracle в Python существуют библиотеки, такие как `cx_Oracle`. Oracle обычно выбирают для крупных корпоративных приложений с высокими требованиями к производительности и безопасности.

Создание базы данных в Python

Существует несколько способов создания базы данных в Python с использованием различных модулей. Рассмотрим создание SQLite базы данных, так как SQLite не требует установки отдельного сервера. После создания базы данных можно адаптировать код для работы с другими базами данных, такими как MySQL, PostgreSQL, MongoDB и др.

�� Готовы начать свой путь в мире программирования? FoxmindEd представляет онлайн-курс Python для начинающих, который поможет вам освоить этот язык и усилить ваш навык! ��

�� Начните с минимальных знаний и прокачайтесь до уровня профессионала вместе с нашими менторами-практиками! ��

�� Наши студенты проходят этот курс за 4-5 месяцев в среднем.

�� А еще у нас есть 7 дней тестового периода, бесплатная заморозка курса, и вы можете выбрать подходящий вам уровень менторинга.��‍��

�� Даже если вы абсолютно новичок и начинаете с нуля, не волнуйтесь! У нас есть специальный стартовый курс Python Start, который подойдет для тех, кто только начинает свой путь в программировании.

Шаг 1: Установка модуля SQLite

Python поставляется с модулем `sqlite3`, который обеспечивает встроенную поддержку для работы с SQLite. Нет необходимости устанавливать его отдельно.

Шаг 2: Создание и подключение к базе данных

```python import sqlite3 # Подключение или создание базы данных connection = sqlite3.connect("example.db") ```

При выполнении этого кода будет создан файл `example.db`, если он не существует, или установлено подключение к уже существующей базе данных.

Шаг 3: Создание таблицы

```python # Получение объекта курсора для выполнения операций с базой данных cursor = connection.cursor() # SQL-запрос для создания таблицы create_table_query = """ CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER ); """ # Выполнение SQL-запроса для создания таблицы cursor.execute(create_table_query) # Закрытие курсора (опционально, но рекомендуется) cursor.close() ```

В этом шаге мы создаем таблицу с именем `users`, имеющую столбцы `id`, `name` и `age`. Важно использовать `IF NOT EXISTS`, чтобы не вызывать ошибку, если таблица уже существует.

Шаг 4: Вставка данных

```python cursor = connection.cursor() # SQL-запрос для вставки данных insert_query = """ INSERT INTO users (name, age) VALUES (?, ?); """ # Данные для вставки user_data = [ ("Alice", 25), ("Bob", 30), ("Eve", 22) ] # Выполнение SQL-запроса для вставки данных cursor.executemany(insert_query, user_data) # Сохранение изменений (commit) connection.commit() # Закрытие курсора (опционально, но рекомендуется) cursor.close() ```

Мы используем метод `executemany`, чтобы вставить несколько записей одновременно.

Шаг 5: Извлечение данных

```python cursor = connection.cursor() # SQL-запрос для извлечения данных select_query = """ SELECT * FROM users; """ # Выполнение SQL-запроса для извлечения данных cursor.execute(select_query) # Получение всех данных data = cursor.fetchall() # Вывод данных for row in data: print(row) # Закрытие курсора (опционально, но рекомендуется) cursor.close() ```

В этом шаге мы извлекаем все данные из таблицы `users` и выводим их.

Шаг 6: Закрытие соединения

```python # Закрытие соединения с базой данных connection.close() ```

После завершения работы с базой данных рекомендуется закрыть соединение.

Вы можете применить аналогичные шаги для работы с другими базами данных, заменив соответствующие части кода. Обратите внимание, что рекомендуется использовать контекстные менеджеры (`with`), чтобы автоматически закрывать соединение и курсоры.

Подключение базы данных к Python

Подключение базы данных к Python зависит от типа базы данных, с которой вы хотите работать. Рассмотрим, как подключиться к нескольким популярным базам данных, используя соответствующие библиотеки и модули.

Подключение базы данных к Python

Похожие материалы

Виртуальное окружение в разработке на языке Python

Моё мнение про Python

Основные аспекты изучения Python

Самые популярные библиотеки Python

Сергей Немчинский: Что пишут на Python? ПЛЮСЫ и МИНУСЫ Python

Как создать таблицы базы данных в Python со встроенной СУБД

Связь между тремя таблицами посредством ER-диаграммы, SQLite в Python

Продолжим работать с базами данных со встроенной Python-библиотекой — sqlite3, которая предоставляет интерфейс SQLite. На практическом примере расскажем о создании таблиц, построим отношение один-ко-многим и покажем результаты в SQL-клиенте — DBeaver.

Интерфейс SQLite в Python

В прошлой статье мы разобрались с интерфейсом sqlite3, а именно:

  1. как устанавливать соединение с базой данных,
  2. как совершать транзакции, используя контекстный менеджер with,
  3. как инициализировать объект Cursor, полезный для получения данных,
  4. как писать безопасные запросы, используя ? или :value .

Теперь можем приступить к созданию таблиц.

Создаем таблицу user

Для выполнения запросов используется метод execute . Пусть будет таблица User с тремя атрибутами: id, имя, возраст. Код в Python для создания таблицы будет выглядеть так:

import sqlite3 con = sqlite3.connect("test.db") cur = con.cursor() with con: cur.execute(""" CREATE TABLE user ( id INT NOT NULL PRIMARY KEY, name TEXT, age INTEGER ); """)

Типов данных в SQLite всего 5: NULL, INT, REAL, TEXT, BLOB. Последний тип данных — это Binary Large OBjects, т.е. бинарные объекты (документы, рисунки, аудио).

Добавляем данные

Добавить можно как одну запись, так и список записей. Во втором случае используется executemany . Выполним два запроса в Python:

query = 'INSERT INTO USER (id, name, age) values(?, ?, ?)' data = [ (2, 'Vova', 25), (3, 'Anna', 21), (4, 'Kolya', 19) ] with con: cur.executemany(query, data)
data = (1, "Sasha", 32) with con: cur.execute("INSERT INTO user (id, name, age) values(?, ?, ?)", data)
Выводим данные пользователей

Используя метод fetchall объекта Cursor , можно получить все записи, например:

cur.execute("SELECT * FROM user WHERE age 

В то время как метод fetchone выдаст только первую:

cur.execute("SELECT * FROM USER WHERE age 
Отношение один-ко-многим

Воспроизведем отношение один-ко-многим. Допустим, каждый пользователь знает несколько иностранных языков. Для этого нам понадобятся еще две таблицы: таблица с языками и таблица, которая связывает id пользователя и id языка.

Таблица языков с Python-кодом будет выглядеть так:

with con: cur.execute(""" CREATE TABLE language ( id INT NOT NULL PRIMARY KEY, name TEXT ); """)

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

with con: cur.execute(""" CREATE TABLE user_language ( user_id INT, language_id INT, PRIMARY KEY(user_id, language_id), FOREIGN KEY(user_id) REFERENCES user(id), FOREIGN KEY(language_id) REFERENCES language(id) ); """)
Добавляем данные языков

Добавим несколько языков в таблицу Language. Запрос в Python:

data = [ (1, "english"), (2, "spanish"), (3, "french") ] with con: cur.executemany("INSERT INTO language VALUES(?, ?)", data)

Теперь обозначим пользователей, которые знают иностранные языки:

data = [ (1, 2), # Саша знает испанский (2, 1), # Вова знает английский (2, 2), # Вова еще знает испанский (3, 3), # Анна знает французский ] with con: cur.executemany("INSERT INTO user_language VALUES(?, ?)", data)
Выводим данные пользователей, знающих иностранные языки

Выведем пользователей и языки, которые они знают. Нам нужно только записать условие совпадения идентификаторов. В Python запрос выглядит следующим образом:

cur.execute(""" SELECT user.name, language.name FROM user, language, user_language WHERE (user.id = user_language.user_id AND language.id = user_language.language_id) """).fetchall()

На выходе получили:

[('Sasha', 'spanish'), ('Vova', 'english'), ('Vova', 'spanish'), ('Anna', 'french')]

После работы с базой данных следует закрыть соединение:

con.close()
SQL-клиент DBeaver для просмотра результатов

Можно получить доступ к базам данных с помощью SQL-клиента, например, свободного и открытого DBeaver. Запустив DBeaver, необходимо установить соединение с базой данных во вкладке Базы данных (Database), как это показано на рисунке ниже. После этого указать тип БД и путь к ней.

Нажатие на вкладку Database в DBeaver

В DBeaver также можно писать запросы. Кроме этого, мы можем посмотреть на ER-диаграмму созданных таблиц в соответствующей вкладке. На рисунке ниже это проиллюстрировано.

Связь между тремя таблицами посредством ER-диаграммы

Использованный код доступен в репозитории на Github. В следующей статье поговорим о интеграции SQLite с Python-библиотекой Pandas. А о том, как работать с данными в Python на проектах Data Science, вы узнаете на курсах в лицензированном учебном центре обучения и повышения квалификации IT-специалистов в Москве.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *