Содержание

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 отключает сопоставление

  • isolation_level : устанавливает уровень изоляции подключения и определяет процесс отрытия неявных транзакций. Возможные значения: «DEFERRED» (значение по умолчанию), «EXCLUSIVE», «IMMEDIATE» или None (неявные транзакции отключены)

  • check_same_thread: если равно True (значение по умолчанию), то только поток, который создал подключение, может его использовать. Если равно False, подключение может использоваться несколькими потоками.

  • factory: класс фабрики, который применяется для создания подключения. Должен представлять класс, производный от Connection. По умолчанию используется класс

    sqlite3.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 Reference
CSS 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 колба веб-разработчик

Управление транзакциями с помощью Django 1.