Перейти к содержимому

Какую бд выбрать для python

  • автор:

Выбор базы данных для новичка в Python и БД [закрыт]

Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.

Закрыт 7 лет назад .

Слышал много про разные типы базы данных от кажется SimpleBD (в одном файле), до MySQL, Postgresql. Как они работают (в целом со стороны) я понимаю на уровне пользователя. Но вот язык общения с ними (sql запросы для меня почти темный лес). Хочется иметь несложную в настройке\администрировании БД, к которой легко писать запросы из python скрипта, получать данные, загружать данные. Все это нужно для обучения, личного\рабочего использования, не направленного на масс-use (высоко-нагруженные сайты). Вопрос: Поделитесь опытом с какой из БД и библиотекой в python проще всего взаимодействовать с данными для новичка, что бы не вылазило по 10-20 ошибок, из за сложного синтаксиса запросов в котором нужно очень долго разбираться. Правильно ли я понимаю что самая распространенная это MySQL и под нее можно найти больше примеров\видео уроков?

Отслеживать
задан 31 мар 2016 в 23:54
992 3 3 золотых знака 10 10 серебряных знаков 24 24 бронзовых знака

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Собственно всё, что нужно знать для работы с SQLite:

### SQL QUERIES ### selAll = "SELECT * FROM tasks" createCommand = """ # Создать таблицу CREATE TABLE tasks ( id INTEGER PRIMARY KEY, 'Задача' NVARCHAR(1000), 'Подзадача' NVARCHAR(1000), 'Сотрудник' NVARCHAR(50), 'Дата' DATE, 'Статус' NVARCHAR(200), 'Коммент' NVARCHAR(1000), 'Тек статус' NVARCHAR(30), 'Осталось' INTEGER );""" searchText = """ # Искать в таблице SELECT * FROM tasks WHERE Задача like "%%" OR Подзадача like "%%" OR Сотрудник like "%%";""" insertText = """ # Внести новые данные в таблицу INSERT INTO tasks (ID, 'Задача', 'Подзадача', 'Сотрудник', 'Дата', 'Статус', 'Коммент', 'Тек статус' ) VALUES (NULL, "", "", "", "", "", "", "" );""" deleteText = "DELETE FROM tasks WHERE # Удалить некоторые данные updateText = """UPDATE tasks # Отредактировать данные SET 'Задача'="", 'Подзадача'="", 'Сотрудник'="", 'Дата'="", 'Статус'="", 'Коммент'="", 'Тек статус'="" WHERE >Использование в Питоне. Создание таблицы:
connection = sqlite3.connect(dbfile) cursor = connection.cursor() try: cursor.execute(createCommand) except sqlite3.OperationalError: pass 

Вставка данных из словаря (newRecordDict) в таблицу:

insertCommand = insertText.format( tsk=newRecordDict["Задача"], stsk=newRecordDict["Подзадача"], prsn=newRecordDict["Сотрудник"], dt=newRecordDict["Дата"], stts=newRecordDict["Статус"], cmt=newRecordDict["Коммент"], crsts=newRecordDict["Тек статус"] ) cursor.execute(insertCommand) connection.commit() 

Базы данных и их использование в приложениях на Python

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

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

Зачем нужны базы данных?

На высоком уровне веб-приложения хранят данные и представляют их пользователям в удобном виде. Например, Google хранит данные о дорогах и предоставляет маршруты для проезда из одного места в другое при каждом использовании вами Google Maps. Строить такие маршруты движения возможно благодаря тому, что данные хранятся в структурированном формате.

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

Для управления созданием и использованием баз данных создано много реализаций СУБД — систем управления базами данных. Примеры СУБД — PostgreSQL, MySQL, SQLite. Также существуют нереляционные базы данных — NoSQL.

Реляционные базы данных

В веб-разработке на Python чаще всего используются реляционные базы данных.

В этих базах данные хранятся в виде серии таблиц. Взаимосвязи между таблицами создаются при помощи внешних ключей. (Само определение «реляционные» происходит от англ. relations — «связи, отношения», — прим. перев.)

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

Реализации хранилищ баз данных различаются по сложности. SQLite — СУБД, встроенная в Python — создает один файл для всех данных каждой базы данных.

Другие СУБД, такие как PostgreSQL, MySQL, Oracle и Microsoft SQL Server, имеют более сложные схемы хранения. Кроме того, они предлагают дополнительные расширенные функции, полезные для хранения данных веб-приложений. Например:

  1. Репликация данных между главной базой данных и одним или несколькими подчиненными экземплярами, доступными только для чтения.
  2. Расширенные типы столбцов, которые могут эффективно хранить полуструктурированные данные, такие как JSON (JavaScript Object Notation).
  3. Сегментирование, которое позволяет горизонтально масштабировать несколько баз данных, каждая из которых служит экземпляром для чтения и записи, за счет задержки в согласованности данных.
  4. Мониторинг, статистика и другая полезная информация о выполнении для схем и таблиц базы данных.

Обычно веб-приложения начинаются с одного экземпляра базы данных, например PostgreSQL, с простой схемой. Со временем схема базы данных превращается в более сложную структуру с использованием миграций. При этом возрастает потребность в расширенных функциях, таких как репликация, сегментирование и мониторинг, поскольку использование базы данных становится более интенсивным.

Наиболее распространенные базы данных для веб-приложений на Python

PostgreSQL и MySQL – две наиболее распространенные базы данных с открытым исходным кодом для хранения данных веб-приложений на Python.

SQLite – это база данных, которая хранится в одном файле на диске. SQLite встроена в Python, но предназначена только для доступа по одному соединению за раз. Поэтому настоятельно рекомендуется не запускать производственное веб-приложение с SQLite. Эта база данных хороша для учебных проектов, когда вы только осваиваете, как всё работает.

Для продакшена же лучше использовать PostgreSQL или MySQL, или другую базу данных, в том числе нереляционную – всё зависит от специфики вашего приложения.

База данных PostgreSQL

PostgreSQL – это рекомендуемая реляционная СУБД для работы с веб-приложениями на Python. Функционал PostgreSQL, его активное развитие и улучшение, а также стабильность послужили причиной использования этой СУБД в бэкенде миллионов приложений, существующих сегодня в сети.

База данных MySQL

MySQL – еще одна практичная реализация СУБД для приложений, написанных на Python. Имеет открытый исходный код.

MySQL проще в освоении, чем PostgreSQL, но не так богата функциями.

Подключение к базе данных с помощью Python

Для работы с реляционной базой данных с использованием Python нужны библиотеки. Наиболее распространенные библиотеки для реляционных баз данных:

  • psycopg2 (исходный код) для PostgreSQL.
  • MySQLdb (исходный код) для MySQL. Обратите внимание, что разработка этого драйвера в основном заморожена. Поэтому будет целесообразно обратить внимание на альтернативные варианты, если в бэкенде вашего приложения используется MySQL.
  • cx_Oracle (исходный код) для Oracle Database.

Поддержка SQLite встроена во все версии Python 2.7+, поэтому отдельная библиотека для подключения не требуется. Просто импортируйте sqlite3 ( import sqlite3 ), и можно начинать работатьтоirметоyey.

Объектно-реляционное отображение

Объектно-реляционное отображение (англ. object-relational mapping, ORM) позволяет разработчикам получать доступ к данным из бэкенда при помощи Python-кода, а не SQL-запросов. Все структуры веб-приложений по-разному обрабатывают интеграцию ORM. По объектно-реляционному отображению есть множество ресурсов, так что вы без проблем разберетесь в этой теме.

Размещение баз данных на стороннем сервере

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

  • Amazon Relational Database Service (RDS) предоставляет предварительно настроенные экземпляры MySQL и PostgreSQL. Экземпляры можно масштабировать до больших или меньших конфигураций в зависимости от требований к хранилищу и производительности.
  • Google Cloud SQL – это сервис для работы с серверами MySQL, PostgreSQL и SQL. Позволяет управлять базами данных, делать бэкапы, репликации и вносить автоматические исправления. Cloud SQL интегрируется с Google App Engine, но также может использоваться и независимо.
  • BitCan предоставляет размещение баз данных MySQL и MongoDB с обширными услугами резервного копирования.
  • ElephantSQL – это SaaS-компания, которая размещает базы данных PostgreSQL и управляет конфигурацией сервера, резервным копированием и подключением к данным поверх экземпляров Amazon Web Services.

Полезные источники для изучения баз данных

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

Книги для изучения баз данных:

  1. «Изучаем SQL», автор — Алан Бьюли. Эта книга отлично подойдет для новичков, только начинающих знакомиться с обширным миром баз данных.
  2. «SQL», автор — Крис Фиайли. В этой книге подробно и на примерах разбирается использование языка запросов SQL для решения разных задач.
  3. «SQL. Сборник рецептов», автор — Энтони Молинаро. Данное пособие подойдет тем, кто уже имеет определенные знания об SQL и хочет развивать свои навыки.
  4. «SQL. Библия пользователя», авторы — Алекс Кригель и др., 2-е издание. Уникальность книги в том, что в ней приведены примеры реализации различных запросов на трех основных диалектах ведущих СУБД.
  5. «Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL», авторы — Эрик Редмонд, Джим Р. Уилсон. В данной книге рассказывается в основном о нереляционных базах данных. Вы узнаете об особенностях таких СУБД, как Redis, Neo4J, CouchDB, MongoDB, HBase, PostgreSQL и Riak.
  6. «Работа с PostgreSQL: настройка и масштабирование», автор — А. Ю. Васильев. Это справочник по настройке и масштабированию PostgreSQL и тонкостям его использования.

Видеокурсы:

Если же вы больше предпочитаете видеоуроки и курсы, то существует множество источников для любого уровня подготовки. Ниже приведены примеры таких источников. Они в основном рассчитаны для новичков:

  • Основы баз данных
  • Изучение SQL для начинающих
  • Видеокурс по базам данных от Технопарка
  • Python and MySQL: Database Manipulation with Python

Контрольный чеклист для изучения баз данных

  1. Установите PostgreSQL на свой сервер или персональный компьютер. Если вы используете Ubuntu, запустите sudo apt-get install postgresql .
  2. Убедитесь, что в зависимостях вашего приложения есть библиотека psycopg2.
  3. Настройте свое веб-приложение для подключения к экземпляру PostgreSQL.
  4. Создавайте модели в ORM с помощью встроенного ORM Django или SQLAlchemy с Flask.
  5. Создайте таблицы своей базы данных или синхронизируйте модели ORM с экземпляром PostgreSQL, если вы используете ORM.
  6. Начните создавать, читать, обновлять и удалять данные в базе данных из вашего веб-приложения.

Заключение

В этой статье мы кратко рассказали про базы данных в Python. Обсудили, какие они бывают и в чем особенности использования той или иной СУБД. Также мы дали вам подборки книг и видеоматериалов для дальнейшего изучения баз данных. Надеемся, что вам все это пригодится. Успехов в освоении баз данных и написании кода!

Базы данных

Здравствуйте, здесь и сейчас я хочу рассказать, что такое базы данных, зачем они нужны, и т.д.; для работы с ними мы будем использовать python и его библиотеку sqlite3.

База данных — совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования данных

Так нам говорит Яндекс, но если сказать простыми словами, не углубляясь во все эти понятия, то:

Базы данных (БД) — библиотека, хранящая данные в том или ином виде.

То есть как в библиотеку мы можем прийти и взять книгу «Война и мир», зная что она будет лежать в разделе романов, на букву «В», так и из БД мы можем взять запись по определённому аргументу, в данном случае жанру.

И тут возникает вопрос.

Как это сделать?

И что бы ответить на этот вопрос, мы должны кое-что узнать.

Как хранятся данные в базах данных

Сначала нужно понять, что БД делятся на:

Сетевые и иерархические БД:

Такие БД представляют собой графы и хранят информацию в них же.

  • Иерархические — древовидный граф
  • Сетевые — полный граф

Данные БД здесь мы рассматривать не будем. Поэтому перейдём к реляционной БД.

Реляционные базы данных

Реляционные БД — БД, в которых данные хранятся в виде таблицы, например Exel.

SQL — именно реляционная БД, и все данные в ней хранятся, в виде таблицы. Например такой:

Я думаю что, на вопрос мы ответили, и можно идти дальше.

Зачем нужны базы данных?

За всю жизнь, человечество накопила невероятно много информации, а БД, как мы знаем собирают, и сортирует эту информацию по таблицам (в нашем случае). И БД помогают абсолютно спокойно ориентироваться во всей этой куче информации, добавлять её туда, изменять и т.д.;

Из теории в практику

Сейчас мы пойдём в практику, но перед этим хотелось бы уточнить кое-что. Сверху я написал такую строку:

SQL — именно реляционная БД, и все данные в ней хранятся, в виде таблицы.

И как вы понимаете, это неверно.
SQL — это структурированный язык запросов (structured query language). Грубо говоря это язык программирования, позволяющий управлять Базами данных, таблицами в них и т.д.

Мой косяк исправили, идём в практику!

Установка sqlite3

Да, это смешно, но мало ли кому-нибудь понадобится

Я не буду описывать алгоритм установки, ведь это давно сделали за меня, если вам нужно установить данный модуль, то просьба идти вот сюда.

Создание первой БД

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 ('', '')") 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 для работы с базами данных SQL и NoSQL

Узнайте, как использовать Python для работы с базами данных SQL и NoSQL, с практическими примерами на SQLite и MongoDB!

Алексей Кодов
Автор статьи
10 июля 2023 в 17:48

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

Работа с SQL-базами данных

Для работы с SQL-базами данных в Python обычно используются библиотеки, которые предоставляют интерфейс для взаимодействия с базами данных. Самыми распространенными являются sqlite3 , MySQLdb и psycopg2 для SQLite, MySQL и PostgreSQL соответственно.

Пример с SQLite

Давайте рассмотрим пример работы с SQLite, встроенной базой данных, доступной в стандартной библиотеке Python.

import sqlite3 # Создание соединения с базой данных conn = sqlite3.connect('example.db') # Создание курсора для выполнения SQL-запросов cursor = conn.cursor() # Создание таблицы cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)''') # Вставка записи в таблицу cursor.execute("INSERT INTO users (name) VALUES ('John Doe')") # Сохранение изменений conn.commit() # Выборка данных из таблицы cursor.execute("SELECT * FROM users") print(cursor.fetchall()) # Закрытие соединения с базой данных conn.close()

Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

Работа с NoSQL-базами данных

NoSQL-базы данных предоставляют гибкость и масштабируемость, что делает их популярными для работы с большими объемами данных. Для работы с NoSQL-базами данных в Python также используются специальные библиотеки. Некоторые из популярных NoSQL-баз данных и соответствующих им библиотек: MongoDB ( pymongo ), Redis ( redis-py ), Cassandra ( cassandra-driver ).

Пример с MongoDB

Рассмотрим пример работы с MongoDB, одной из самых популярных NoSQL-баз данных.

# Установка необходимой библиотеки: pip install pymongo from pymongo import MongoClient # Создание соединения с базой данных client = MongoClient('mongodb://localhost:27017/') # Выбор базы данных и коллекции db = client['example_db'] users = db['users'] # Вставка записи в коллекцию user = result = users.insert_one(user) print("Inserted user with id:", result.inserted_id) # Выборка данных из коллекции for user in users.find(): print(user) # Закрытие соединения с базой данных client.close()

�� В заключение, Python предоставляет удобные инструменты для работы с различными базами данных, будь то SQL или NoSQL. Основной подход заключается в использовании специальных библиотек, которые предоставляют интерфейс для взаимодействия с базами данных. В этой статье мы рассмотрели примеры работы с SQLite и MongoDB, но подходы для других баз данных будут аналогичными.

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

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