Python, введение в БД / Хабр
Здравствуйте, здесь и сейчас я хочу рассказать, что такое базы данных, зачем они нужны, и т.д.; для работы с ними мы будем использовать python и его библиотеку sqlite3.
База данных — совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования данных
Так нам говорит Яндекс, но если сказать простыми словами, не углубляясь во все эти понятия, то:
Базы данных (БД) — библиотека, хранящая данные в том или ином виде.
То есть как в библиотеку мы можем прийти и взять книгу «Война и мир», зная что она будет лежать в разделе романов, на букву «В», так и из БД мы можем взять запись по определённому аргументу, в данном случае жанру.
И тут возникает вопрос.
Как это сделать?
И что бы ответить на этот вопрос, мы должны кое-что узнать.
Сначала нужно понять, что БД делятся на:
- Реляционные
- Иерархические
Сетевые и иерархические БД:
Такие БД представляют собой графы и хранят информацию в них же.
- Иерархические — древовидный граф
- Сетевые — полный граф
Данные БД здесь мы рассматривать не будем. Поэтому перейдём к реляционной БД.
Реляционные базы данных
Реляционные БД — БД, в которых данные хранятся в виде таблицы, например Exel.
SQL — именно реляционная БД, и все данные в ней хранятся, в виде таблицы. Например такой:
Я думаю что, на вопрос мы ответили, и можно идти дальше.
За всю жизнь, человечество накопила невероятно много информации, а БД, как мы знаем собирают, и сортирует эту информацию по таблицам
Сейчас мы пойдём в практику, но перед этим хотелось бы уточнить кое-что. Сверху я написал такую строку:
SQL — именно реляционная БД, и все данные в ней хранятся, в виде таблицы.
И как вы понимаете, это неверно.
SQL — это структурированный язык запросов (structured query language). Грубо говоря это язык программирования, позволяющий управлять Базами данных, таблицами в них и т.д.
Мой косяк исправили, идём в практику!
Да, это смешно, но мало ли кому-нибудь понадобится
Я не буду описывать алгоритм установки, ведь это давно сделали за меня, если вам нужно установить данный модуль, то просьба идти вот сюда.
import sqlite3 as sql con = sql.connect('test.db') with con: cur = con.cursor() cur.execute("CREATE TABLE IF NOT EXISTS `test` (id INTEGER)") con.commit()
Сначала импорт, потом «con =».
Объясняю, sql.connect(«test.db») — создает файл с именем «test.db», если запустили впервые. То есть принимает на вход путь до файла с расширением .db
cur = con.cursor — позволит нам производить операции с БД, остальное не важно.
cur.execute(…) — создаёт таблицу с именем тест и всего 1 колонкой id, в которой все данные — числа
commit() — грубо говоря, сохранение БД
А давайте создадим программу, которая запрашивает имя и фамилию, и записывает их в БД, а потом по выбору цифр либо выводит, либо записывает снова.
import sqlite3 as sql print("1 - добавление\n2 - получение") choice = int(input("> ")) con = sql.connect('test.db') with con: cur = con.cursor() cur.execute("CREATE TABLE IF NOT EXISTS `test` (`name` STRING, `surname` STRING)") if choice == 1: name = input("Name\n> ") surname = input("Surname\n> ") cur.execute(f"INSERT INTO `test` VALUES ('{name}', '{surname}')") elif choice == 2: cur.execute("SELECT * FROM `test`") rows = cur.fetchall() for row in rows: print(row[0], row[1]) else: print("Вы ошиблись") con.commit() cur.close()
Стандартные моменты пропустим.
cur.execute(«INS…») — Добавление данных
cur.execute(«SeL…») — Получение данных. И так как там отдаётся массив, то мы его перебираем, а после ещё и из кортежа данные берём.
«SELECT», «INSERT», «DROP» и т.д. — это всё SQL.
cur.fetchall() — это что бы в переменную записалось всё, что пришло из БД.
Базы данных — важная и очень нужная вещь. Здесь мы затронули настолько её малую часть, что аж смешно. Поэтому чтобы действительно узнать как это работает, советую почитать об этом всём в интернете, благо информации много. Удачи!
Python и базы данных | Подключение к SQLite
Последнее обновление: 14.11.2022
Python по умолчанию поддерживает работу с базой данных SQLite. Для этого применяется встроенная библиотека sqlite3, которая в python доступна в виде одноименного модуля.
Для подключения к бд в этой библиотеке определена функция connect():
sqlite3.connect(database, timeout=5.0, detect_types=0, isolation_level='DEFERRED', check_same_thread=True, factory=sqlite3.Connection, cached_statements=128, uri=False)
Она принимает следующие параметры:
database
: путь к файлу базы данных. Если база данных расположена в памяти, а не на диске, то для открытия подключения используется":memory:"
timeout
: период времени в секундах, через который генерируется исключение, если файл бд занят другим процессомdetect_types
: управляет сопоставлением типов SQLite с типами Python. Значение 0 отключает сопоставление
: устанавливает уровень изоляции подключения и определяет процесс отрытия неявных транзакций. Возможные значения: «DEFERRED» (значение по умолчанию), «EXCLUSIVE», «IMMEDIATE» или None (неявные транзакции отключены)check_same_thread
: если равноTrue
(значение по умолчанию), то только поток, который создал подключение, может его использовать. Если равноFalse
, подключение может использоваться несколькими потоками.factory
: класс фабрики, который применяется для создания подключения. Должен представлять класс, производный отConnection
. По умолчанию используется классcached_statements
: количество SQL-инструкций, которые должны кэшироваться. По умолчанию равно 128.uri
: булевое значение, если равноTrue
, то путь к базе данных рассматривается как адрес URI
Обязательным параметром функции является путь к базе данных. Результатом функции является объект подключения (объект класса Connection), через затем можно взаимодействовать с базой данных.
Например, подключение к базе данных «metanit.db», которая располагается в той же папке, что и текущий скрипт (если такая база данных отсутствует, то она автоматически создается):
import sqlite3; con = sqlite3.connect("metanit.db")
Сопоставление типов SQLite и Python
Прежде чем начать работать с базой данных, следует понимать, как сопоставляются типы SQLite и типы Python. По умолчанию применяются следующие сопоставления:
Python | SQLite |
None | NULL |
int | INTEGER |
float | REAL |
str | TEXT |
bytes | BLOB |
Следует отметить, что при необходимости мы можем переопределять сопоставление, применяя кастомные конвертеры типов.
Получение курсора
Для выполнения выражений SQL и получения данных из БД, необходимо создать курсор. Для этого у объекта Connection вызывается метод cursor()
. Этот метод возвращает
объект Cursor:
import sqlite3; # создаем подключение con = sqlite3.connect("metanit.db") # получаем курсор cursor = con.cursor()
Выполнение запросов к базе данных
Для выполнения запросов и получения данных класс Cursor предоставляет ряд методов:
execute(sql, parameters=(), /)
: выполняет одну SQL-инструкцию. Через второй параметр в код SQL можно передать набор параметров в виде списка или словаряexecutemany(sql, parameters, /)
: выполняет параметризованное SQL-инструкцию. Через второй параметр принимает наборы значений, которые передаются в выполняемый код SQL.executescript(sql_script, /)
: выполняет SQL-скрипт, который может включать множество SQL-инструкцийfetchone()
: возвращает одну строку в виде кортежа из полученного из БД набора строкfetchmany(size=cursor. arraysize)
: возвращает набор строк в виде списка. количество возвращаемых строк передается через параметр. Если больше строк нет в наборе, то возвращается пустой список.fetchall()
: возвращает все (оставшиеся) строки в виде списка. При отсутствии строк возвращается пустой список.
Создание таблицы
Для создания таблицы в SQLite применяется инструкция CREATE TABLE
. Например, создадим в базе данных «metanit.db» таблицу people:
import sqlite3; con = sqlite3.connect("metanit.db") cursor = con.cursor() # создаем таблицу people cursor.execute("""CREATE TABLE people (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER) """)
В метод cursor.execute()
передается инструкция CREATE TABLE
, которая создает таблицу people с тремя столбцами. Столбец id представляет идентификатор
пользователя, хранит данные типа Integer, то есть число, и также представляет первичный ключ, значение которого будет автоматически генерироваться и инкрементироваться с каждой новой строкой.
Второй столбец — name представляет строку — имя пользователя. И третий столбец — age представляет возраст пользователя.
После выполнения скрипта мы можем открыть базу данных в каком-нибудь браузере баз данных SQLite, например, в DB Browser for SQLite и увидеть созданную таблицу
СодержаниеВперед
Python MySQL Создать базу данных
❮ Предыдущая Далее ❯
Создание базы данных
Чтобы создать базу данных в MySQL, используйте оператор «CREATE DATABASE»:
Пример
создайте базу данных с именем «mydatabase»:
импортировать mysql.connector
mydb = mysql.connector.connect(
host=»localhost»,
user=» yourusername «,
password=» yourpassword »
)
mycursor = mydb. cursor()
mycursor.execute(«СОЗДАТЬ БАЗУ ДАННЫХ
mydatabase»)
Пример запуска »
Если приведенный выше код был выполнен без ошибок, вы успешно создал базу данных.
Проверить, существует ли база данных
Вы можете проверить, существует ли база данных, перечислив все базы данных в вашей системе, с помощью оператора «SHOW DATABASES»:
Пример
Вернуть список баз данных вашей системы:
импортировать mysql.connector
mydb = mysql.connector.connect(
host=»localhost»,
user=» yourusername «,
password=» yourpassword »
)
mycursor = mydb.cursor()
mycursor.execute(«ПОКАЗАТЬ БАЗЫ ДАННЫХ»)
для x in mycursor print(x)
Пример запуска »
Или вы можете попробовать получить доступ к базе данных при подключении:
Пример
Попробуйте подключиться к базе данных «mydatabase»:
импортировать mysql. connector
mydb = mysql.connector.connect(
host=»localhost»,
пользователь = « ваше имя пользователя «,
пароль = « ваш пароль «,
database=»mydatabase»
)
Пример запуска »
Если база данных не существует, вы получите сообщение об ошибке.
❮ Предыдущий Следующий ❯
ВЫБОР ЦВЕТА
Лучшие учебники
Учебное пособие по HTMLУчебное пособие по CSS
Учебное пособие по JavaScript
Практическое руководство
Учебное пособие по SQL
Учебник по Python
Учебник по W3.CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery
Лучшие ссылки
HTML ReferenceCSS Reference
JavaScript Reference
SQL Reference
Python Reference
W3.CSS Reference
Bootstrap Reference
PHP Reference
HTML Colors
Java Reference
Angular Reference
jQuery Reference
9 Top Examples4
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3. CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery
| О
W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.
Copyright 1999-2023 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.
Учебники по базам данных Python — Real Python
В этом разделе собраны все наши руководства, связанные с работой с базами данных в Python. Мы расскажем о таких вещах, как базы данных SQL и NoSQL, и о том, как взаимодействовать с ними с помощью Python.
Бесплатный бонус: Нажмите здесь, чтобы загрузить скелет проекта Python + MongoDB с полным исходным кодом, который показывает, как получить доступ к MongoDB из Python.
Microsoft Power BI и Python: сочетание двух сверхспособностей
23 ноября 2022 г. базы данных наука о данных средний инструменты
Python REST API с Flask, Connexion и SQLAlchemy — часть 3
21 ноября 2022 г. API базы данных колба средний веб-разработчик
Python REST API с Flask, Connexion и SQLAlchemy — часть 2
16 ноября 2022 г. API базы данных колба средний веб-разработчик
Создание средства сокращения URL-адресов с помощью FastAPI и Python
23 августа 2022 г. API базы данных средний проекты веб-разработчик
Асинхронные задачи с Django и Celery
01 августа 2022 г. передовой базы данных Джанго веб-разработчик
SQLite и SQLAlchemy в Python: перемещение ваших данных за пределы плоских файлов
12 июля 2022 г. базы данных средний веб-разработчик
Создание средства сокращения URL-адресов с помощью FastAPI и Python
18 мая 2022 г. API базы данных средний проекты веб-разработчик
Чтение и запись файлов с помощью Pandas
базы данных наука о данных средний
Создание контактной книги с помощью Python, PyQt и SQLite
базы данных графический интерфейс средний проекты
Python и MongoDB: подключение к базам данных NoSQL
базы данных средний
База данных Python и MySQL: практическое введение
базы данных наука о данных средний
Обработка баз данных SQL с помощью PyQt: основы
базы данных графический интерфейс средний
Управление данными с помощью Python, SQLite и SQLAlchemy
базы данных средний веб-разработчик
Введение в библиотеки Python SQL
основы базы данных инструменты
Вопросы интервью инженера данных с Python
базы данных devops средний
панд: как читать и записывать файлы
базы данных наука о данных средний
Предотвращение атак SQL-инъекций с помощью Python
лучшие практики базы данных средний
Копаем глубже в миграции Django
базы данных Джанго средний веб-разработчик
Как использовать Redis с Python
базы данных средний
Как создать индекс в Django без простоя
передовой базы данных Джанго
Django Migrations: учебник для начинающих
основы базы данных Джанго веб-разработчик
Python + Memcached: эффективное кэширование в распределенных приложениях
базы данных средний веб-разработчик
Создание простого веб-приложения с помощью Bottle, SQLAlchemy и Twitter API
API базы данных проекты веб-разработчик
Начало работы с каналами Django
передовой базы данных Джанго веб-разработчик
Кэширование в Django с Redis
базы данных Джанго средний веб-разработчик
Развертывание Django + Python 3 + PostgreSQL в AWS Elastic Beanstalk
передовой базы данных devops Джанго веб-разработчик
Python, Ruby и Golang: сравнение приложений веб-службы
базы данных колба веб-разработчик
Развлечение с новыми функциями Postgres от Django
передовой базы данных Джанго веб-разработчик
Веб-скрейпинг и сканирование с помощью Scrapy и MongoDB
базы данных просмотр веб-страниц
Развертывание приложения Django на AWS Elastic Beanstalk
передовой базы данных devops Джанго веб-разработчик
Парсинг веб-страниц с помощью Scrapy и MongoDB
базы данных просмотр веб-страниц
Обработка подтверждения по электронной почте во время регистрации в Flask
базы данных колба средний веб-разработчик
Flask на примере — реализация очереди задач Redis
базы данных колба веб-разработчик
Миграция данных
базы данных Джанго веб-разработчик
Flask на примере — настройка Postgres, SQLAlchemy и Alembic
базы данных devops колба веб-разработчик