Наиболее распространенные базы данных для веб-приложений на 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 (), и можно начинать работатьтоirметоyey.
Что такое SQL
SQL — это не язык программирования. Правильнее сказать, что это язык запросов к базам данных. Структура запроса сформирована в базе, а нам нужно задать правила — как правильно к ней обратиться.
На SQL можно писать программы, но очень сложно. Поэтому чаще всего языком запросов получают данные, а обрабатывают гибкими языками — например Python или JavaScript.
Что дает SQL:
-
можно найти конкретного человека в огромной таблице с данными;
-
сортировать выбранные данные;
-
удалять ненужную информацию;
-
добавить в ячейку строки и столбцы, расширив таблицу;
-
комбинировать таблицы, создавать связи. Например, если клиент указал контактные данные при покупке товара — информацию передаст на несколько таблиц: товар, клиент, покупка.
-
можно записать новую таблицу.
Язык SQL прост в освоении и использовании. Чтобы понять базу — хватит и дня. На работу с первыми операторами достаточно недели. А гуру тестировщикам или Back-end-разработчикам нужно учиться постоянно.
Что такое база данных
Обычно под базой данных принято понимать любой набор информации, который хранится определенным образом, и этой информацией можно воспользоваться.
Однако если говорить о компьютерных базах данных, то здесь, конечно же, речь идет о так называемых реляционных базах данных.
Логически такая база данных представлена в виде таблиц, в которых и хранится вся эта информация.
Физически база данных представляет собой, конечно же, обычные файлы, созданные в специальном формате.
И здесь возникает вопрос, если база данных — это файлы, созданные в специальном формате, то как создать такие файлы и редактировать их?
Для этого, как Вы понимаете, нужен специальный инструмент, т.е. программа, которая могла бы создавать базы данных и управлять ими, иными словами, работать с файлами базы данных.
Такой программой как раз и выступает СУБД, т.е. система управления базами данных.
create table
Зачем нужен: создание таблиц
Создав новую БД, сообщим MySQL, что теперь мы собираемся работать именно с ней. Выбор активной БД выполняется командой:
Пришло время создать первые таблицы! Для ведения дневника по всем правилам, понадобится создать три таблицы: города (), пользователи () и записи о погоде . В подразделе «Запись» этой главы описано, как должна выглядеть структура таблицы . Переведём это описание на язык SQL:
Чтобы ввести многострочную команду в командной строке используйте символ в конце каждой строки, кроме последней.
Теперь создадим таблицу городов:
MySQL может показать созданную таблицу, если попросить об этом командой:
В ответе будут перечислены все поля таблицы, их тип и другие характеристики.
Типы данных в СУБД Access
При формировании полей в таблицах используются различные типы данных, от правильного выбора которых зависит корректность и эффективность ее работы
Если, например, речь идет об электронных текстовых данных, то важно заранее определиться с допустимым размером строк. Выделив слишком мало позиций для символов, можно не уместить какую-то строку
Другая крайность – выделение слишком большого количества места – стремительно раздувает объем базы данных. Использование динамически изменяемых по размеру полей повышает вычислительную нагрузку, снижая быстродействие.
Выбор подходящего формата для хранения числовых данных тоже имеет свои тонкости: поле для целых чисел не может хранить дробную часть, округление «математическое» и «банковское» имеют разные правила.
Представление дат и времени, выбор точки или запятой в качестве разделителя, возможность использования кириллицы в ссылках зависят от языковых и культурных настроек системы.
Основные типы данных СУБД Access, их описание и примеры использования приведены в таблице.
Система управления базами данных (СУБД)
Система управления базами данных (сокращенно СУБД) – это программное обеспечение для создания и работы с базами данных.
Главная функция СУБД – это управление данными (которые могут быть как во внешней, так и в оперативной памяти). СУБД обязательно поддерживает языки баз данных, а также отвечает за копирование и восстановление информации после каких-либо сбоев.
Реляционные СУБД и язык SQL
Реляционные и объектно-реляционные СУБД являются одними из самых распространенных систем. Они представляют собой таблицы, в которых каждый столбец (он называется «field» или «поле») упорядочен и имеет определенное уникальное название. Последовательность строк (их называют «records» или «записи») определяется последовательностью ввода информации в таблицу. При этом обрабатывание столбцов и строк может происходить в любом порядке. Таблицы с данными связаны между собой специальными отношениями, благодаря чему с данными из разных таблиц можно работать – к примеру, объединять их при помощи одного запроса.
Для управления реляционными базами данных применяется особый язык программирования – SQL. Сокращение расшифровывается как «Structured query language», в переводе на русский – «язык структурированных запросов».
Команды, которые используются в SQL, делятся на:
- манипулирующие данными,
- определяющие данные,
- управляющие данными.
Схема работы с базой данных выглядит следующим образом:
Какие существуют 4 типа СУБД?
Ниже приведен список различных форм систем управления базами данных, данные которых могут классифицировать модели:
№1. База данных отношений
Когда информация хранится в системе управления базами данных (СУБД), они говорят, что она реляционная, если они хранят информацию в строках и столбцах. В наши дни это одна из наиболее широко используемых моделей данных в бизнесе. Основа — SQL.
№ 2. Объектно-ориентированная база данных
Объектно-ориентированное программирование использует систему, в которой материальные объекты представляют данные и информацию.
№3. Иерархическая база данных
Это система, в которой между фрагментами данных существует отношение «один ко многим» (1:N). Здесь данные располагаются в виде древовидной структуры, подобно тому, как папки упорядочиваются на компьютере.
№ 4. Сетевая база данных
Отношения «один к одному» или «многие ко многим» между фрагментами данных поддерживаются в системе управления сетевой базой данных (N:N).
Первая и основная команда в SQL
Что должен уметь любой программист — выбирать информацию из таблицы. Для этого придумали оператор SELECT.
Применим на практике. Чтобы не создавать базу данных, зайдем в онлайн-компилятор mycompiler.io.
Слева находится база данных — Students. Сайт ее создал самостоятельно, как пример. Справа – кнопка RUN, чтобы воспроизвести запрос; и Output, который покажет результаты запроса.
В базе данных два студента: Ryan (мужчина – значок M) и Joanna (женщина — значок F). Попробуем выбрать студента женского пола из базы данных.
Вводим оператор SELECT.
Выбираем таблицу, где возьмем данные. У нас это Students. Используем слово FROM (откуда берем) и название:
Чтобы выбрать конкретную информацию, применим слово WHERE. Выбираем пол студента — добавим к оператору gender и значение Female (F). Как это выглядит в коде:
Жмем RUN и смотрим на Output:
По результатам запроса нашли студента женского пола — Joanna. Теперь вы знаете основной оператор в SQL — SELECT. Также просто учатся и другие значения.
Список наиболее важных команд SQL
SELECT — извлекает данные из таблицы.
UPDATE — обновляет данные.
DELETE — удаление данных.
INSERT INTO — вставить новые данные в базу.
CREATE DATABASE — создать новую базу данных.
CREATE TABLE — создать одну таблицу.
DROP TABLE — удалить одну таблицу.
CREATE INDEX — создать маркер для поиска внутри базы данных.
DROP INDEX — удалить маркер.
Знание MySQL и языка запросов открывает большие возможности в программировании. Любое приложение или сайт с личным кабинетом, формами с информацией требует базы данных. Просто создать сайт не получится — нужно разбираться в том, как код сайта хранится в Интернете.
Из чего состоит СУБД
СУБД — это набор инструментов, каждый из которых способен совершать с базой данных определённое действие: считывать её, удалять элементы или обрабатывать запросы от пользователя. И чтобы все эти инструменты правильно функционировали, у СУБД должна быть хорошо прописанная архитектура.
Главные элементы СУБД — ядро, процессор, программные средства и базы данных. Поговорим о каждом из них подробнее.
Примерное представление устройства СУБД изнутриИллюстрация: Оля Ежак для Skillbox Media
Ядро. Отвечает за работу всей системы в целом. Через него проходят все процессы обработки данных и их хранения. Ядро следит за всеми изменениями баз данных и фиксирует их.
Процессор, или компилятор. Занимается обработкой запросов от пользователей. Главная его задача — преобразовать SQL-запрос в понятные для компьютера команды, а затем вернуть результаты.
Программные средства, или утилиты. Нужны, чтобы пользователь мог вводить запросы, а администраторы могли настраивать доступ и другие необходимые параметры.
Документные СУБД
Документные или документно-ориентированные СУБД — это одна из наиболее популярных разновидностей NoSQL СУБД, где основной единицей логической модели данных является документ — структурированный текст, с определенным синтаксисом.
Иногда встречаются мнения что модель данных в документных БД похожа на модель данных в объектно-ориентированных базах данных. В этом есть доля правды, единственная реальная разница между ними заключается в том, что базы данных документов только сохраняют состояние, но не поведение.
Так же, само название «документо-ориентированная» подчас вводит в заблуждение, и мне встречались коллеги, которые считали, что это база для систем документооборота. Нет, это не так.
Интересно, что документные СУБД развиваются достаточно активно, и сейчас некоторые из них, в том числе, поддерживают проверку схемы.
Известными представителями таких СУБД являются CouchDB, MongoDB, Amazon DocumentDB.
Когда выбирать документную СУБД
Если нужно хранить объекты в одной сущности, но с разной структурой. Если нужно хранит структуры, включая объекты, списки и словари, особенно в формате близкому к JSON.
На самом деле область применения документных СУБД очень широкая. Их можно использовать как компактную базу данных для отдельно взятого микро-сервиса, так и для вполне масштабных решений, в качестве хранилища состояний чего-либо.
Когда не выбирать документную СУБД
Не самое лучшее решение для реализации транзакционная модели, и точно не лучший вариант для формирования отчетности.
Install MySQL on Debian 10
— Advertisement —
If you open a terminal session and use APT to search for the MySQL package in the official repositories, you will have this screen output:
1.- Search for MySQL on Debian 10
As you can see, MySQL is not available on Debian 10. But just add a repository to make it available. First, download the DEB package that adds it using wget.
:~$ wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
2.- Download the repository packages
That package we just downloaded requires GNUPG as a dependency. Then it has to be installed.
:~$ sudo apt install gnupg
3.- Install GNUPG on Debian 10
Now, you can install the package to add the MySQL repository.
:~$ sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
At the time of installing the package, we will be asked to configure the available packages and repositories. The default configuration is pretty good, so just scroll down and press OK.
4.- Adding the MySQL repository on Debian 10
In the end, you will see a screen output similar to this one.
5.- Adding the official MySQL repository
Now, we can install MySQL on Debian 10 by running the following commands.
:~$ sudo apt update :~$ sudo apt install mysql-server
6.- Install MySQL on Debian 10
When the installation is finished, we will be asked for the new root user key. It should be strong and not shared.
7.- Set the new root user password
Next, select the default authentication plugin:
8.- Configuring the plugin
Now, you can secure the new installation using the .
9.- Using the mysql_secure_installation script
As you can see in the image, there you will be asked some questions that will help to configure the new installation. This way, you can have a more secure instance.
So, MySQL is ready to work. You can check the current version.
:~$ mysql --version
10.- MySQL version
So, enjoy it.
Виды баз данных и их структура, примеры
Выделяют несколько видов баз данных. Основными из них являются:
- Фактографическая, с краткой информацией об объектах какой-то системы, формат которой строго фиксирован.
- Документальная, включает документы разного вида, в том числе текстовые, графические, звуковые, мультимедийные.
- Распределенная, является базой данных с разными частями, которые хранятся на различных компьютерах, объединенных в сеть.
- Централизованная, представляет собой базу данных, местом хранения которой является один компьютер.
- Реляционная, имеет табличную организацию данных.
- Неструктурированная (NoSQL), является базой данных, в которой делается попытка решить проблемы масштабируемости и доступности с помощью атомарности и согласованности данных без четкой структуры.
Базы данных разных систем обладают неодинаковой структурой. Для ПЭВМ характерно использование реляционных баз данных с файлами в виде таблиц, в которых столбцы являются полями, а строки – записями. В базе данных находятся данные определенного множества объектов. Для каждой записи характерна информация по одному объекту. Такую базу определяют:
- имя файла;
- список полей;
- ширина полей.
В качестве примера можно привести школьную базу с данными «Ученик», «Класс», «Адрес». Также базой данных является расписание движения поездов или автобусов. В этом случае каждой строке соответствует запись с данными конкретного объекта. Возможные поля: номер рейса, маршрут, время отправления и прибытия. Классической базой данных является телефонный справочник.
Определение
Запрос к базе данных – предписание с указанием на данные, которые необходимы пользователю.
Примечание
В случае некоторых запросов требуется составление сложной программы. К примеру, для выполнения запроса к базе в виде автобусного расписания необходимо вычислить разницу в среднем интервале отправления транспорта из одного города во второй и из второго пункта в третий.
Существует три звена для создания приложения, с помощью которого можно просматривать и редактировать базы данных:
- набор данных;
- источник информации;
- визуальные компоненты управления.
В случае Access роль таких звеньев выполняют:
- Table.
- DataSource.
- DBGrid.
Приложения базы данных является нитью, которая связывает базу и пользователя:
БД => набор данных –=> источник данных => визуальные компоненты => пользователь
Набор данных:
- Table, в виде таблицы, навигационного доступа;
- Query, включая запрос, реляционный доступ.
Визуальными компонентами являются:
- Сетки DBGrid, DBCtrlGrid.
- Навигатор DBNavigator.
- Разные аналоги Lable, Edit.
- Компоненты подстановки.
Access характеризуется наличием следующих типов полей:
- текстовый, в виде текстовой строки с максимальной длиной до 255, заданной параметром «размер»;
- поле МЕМО, является текстом длиной до 65535 символов;
- числовой, в параметре «Размер поля» можно задать поле: байт, целое, действительное и другие;
- дата/время, необходимо для записи данных о времени;
- денежный, является специальным форматом для решения финансовых задач;
- счетчик, в виде автоинкрементного поля, который предназначен для ключевого поля, увеличивается на единицу после добавления новой записи и сохраняется в данное поле новой записи, что гарантирует разные значения для неодинаковых записей;
- логический, в виде «да или нет», «правда или ложь», «включен или выключен»;
- объект OLE, предназначен для хранения документов, картинок, звуков и другой информации, представляет собой частный случай BLOB, то есть полей (Binary Large Object), которые можно встретить в разных базах данных;
- гиперссылка, необходима для хранения ссылок на ресурсы в Интернете, характерна не для всех форматов баз данных, например, отсутствует в dBase и Paradox;
- подстановка.
Благодаря связи с обеспечением целостности таблиц осуществляется контроль удаления и модификации данных. С помощью монопольного доступа к базам данных в них производят фундаментальные изменения.
Что такое первичный ключ
В примере с созданием новой таблицы при перечислении необходимых полей первым полем идёт . Это поле называется первичным ключом. Обязательно создавать первичный ключ в каждой таблице.
Первичный ключ — это особенное поле, в котором сохраняется уникальный идентификатор записи.
Первичный ключ нужен, чтобы у программиста и базы данных всегда была возможность однозначно обратиться к одной конкретной записи для её чтения, обновления или удаления. Если назначить поле первичным ключом, то БД будет следить за тем, чтобы значение в этом поле больше не повторялось в таблице.
А если ещё и добавить аттрибут , то MySQL при добавлении новых записей будет заполнять это поле сама. будет играть роль счётчика — каждая новая запись в таблице получит значение на единицу больше максимального существующего значения.
insert into
Зачем нужен: добавление записи в таблицу
Начнём с добавления новых данных в таблицу. Для добавления записи используется следующий синтаксис:
В начале добавим город в таблицу городов:
При добавлении записи необязательно указывать значения для всех полей. Многие из полей имеют значения по умолчанию, которые сами заполняются при сохранении.
Теперь создадим запись о погоде за сегодня.
При определении таблицы weatherlog мы решили ссылаться на город, путём записи в поле cityid идентификатора города из таблицы cities. Так как мы только что добавили новый город, ничего не мешает использовать его идентификатор в записи о погоде.
Идентификатором города будет первичный ключ, который также был определён в качестве первого поля таблицы. Нумерация этого поля начинается с единицы, значит первая добавленная запись имеет идентификатор . Зная это, запрос на добавление записи о погоде в Санкт-Петербурге за третье сентября 2017 года выглядит так:
select. Чтение информации из БД
Для вывода информации из БД используются запросы типа .
В запросе нужно указать имя таблицы, необходимые поля, а также дополнительные параметры (будут рассмотрены в следующем уроке).
Например, чтобы получить список всех доступных городов:
Все погодные записи:
Вместо перечисления всех столбцов можно использовать знак звездочки — .
Оператор update: обновление информации в БД
При добавлении записи очень легко совершить ошибку: сделать опечатку, не указать значение для одного из полей, и так далее. Естественно, язык SQL предлагает возможности для редактирования уже созданных записей.
Предположим, что при добавлении погодной записи пользователь ошибся и ввёл неверную дату. Чтобы исправить эту ошибку, нужно использовать оператор обновления — . Запрос с этим оператором позволяет обновить значение одного или нескольких полей в существующей записи. Выглядит он так:
Но чтобы правильно составить запрос, необходимо определить условие для поиска записи, которую предлагается обновить. В противном случае, если не указать это условие, то будут обновлены абсолютно все записи в таблице.
В качестве такого условия лучше всего использовать первичный идентификатор записи. Поэтому, прежде чем выполнять запрос обновления, нужно выполнить запрос на чтение информации из таблицы, чтобы узнать, под каким идентификатором сохранилась ошибочная запись. Допустим, этот идентификатор — единица, а правильная дата — седьмое декабря 2022 года.
Запрос на обновление:
Оператор join: объединение записей из двух таблиц
В нашей таблице для хранения погодного дневника город сохраняется как идентификатор, поэтому при обычном чтении данных из этой таблицы вместо названия города стоит непонятное число. Чтобы подставить на место числа действительное значение, а конкретнее — название города, в SQL существуют операторы объединения — . Поддержка операторов объединения и позволяет базе данных называться реляционной.
Поменяем запрос на показ погодных записей, чтобы он объединял две таблицы, а в поле города показывалось его название, а не идентификатор:
Важно усвоить три самых главных момента:
- При чтении из объединённых таблиц, в перечислении полей после SELECT нужно явно указывать в поле имени также имя таблицы, с которой производится объединение.
- Всегда есть основная таблица (тб1), из которой читается большинство полей, и присоединяемая (тб2), имя которой определяется после оператора JOIN.
- Помимо указания имени второй таблицы, обязательно следует указать условие, по которому будет происходить объединение. В этом примере таким условием будет соответствие идентификатора города из тб1 () первичному ключу города из тб2 ().
Шаг 3. Удаление повторений из строк
Теперь мы займёмся устранением других проблем, а именно, избавимся от дубликатов в строках таблицы “users”. Поскольку пользователи @AndyRyder5 и @Brett_Englebert разместили по несколько твиттов, то их имена в таблице “users” (Таблица 3) дублируются в колонке full_name. Данная проблема также решается разделением таблицы “users”.
Поскольку текст твитта и время его создания являются уникальными данными, то их мы поместим в одну и ту же таблицу. Также нам нужно указать связь между твитами и пользователями. Для этого я создал специальный столбец username.
Таблица 4. tweets
username | text | created_at |
---|---|---|
_DreamLead | What do you think about #emailing #campaigns #traffic in #USA? Is it a good market nowadays? do you have #databases? | Tue, 12 Feb 2013 08:43:09 +0000 |
GunnarSvalander | Bill Gates Talks Databases, Free Software on Reddit http://t.co/ShX4hZlA #billgates #databases | Tue, 12 Feb 2013 07:31:06 +0000 |
GEsoftware | RT @KirkDBorne: Readings in #Databases: excellent reading list, many categories: http://t.co/S6RBUNxq via @rxin Fascinating. | Tue, 12 Feb 2013 07:30:24 +0000 |
adrianburch | RT @tisakovich: @NimbusData at the @Barclays Big Data conference in San Francisco today, talking #virtualization, #databases, and #flash memory. | Tue, 12 Feb 2013 06:58:22 +0000 |
AndyRyder5 | http://t.co/D3KOJIvF article about Madden 2013 using AI to prodict the super bowl #databases #bus311 | Tue, 12 Feb 2013 05:29:41 +0000 |
AndyRyder5 | http://t.co/rBhBXjma an article about privacy settings and facebook #databases #bus311 | Tue, 12 Feb 2013 05:24:17 +0000 |
Brett_Englebert | #BUS311 University of Minnesota’s NCFPD is creating #databases to prevent “food fraud.” http://t.co/0LsAbKqJ | Tue, 12 Feb 2013 01:49:19 +0000 |
Brett_Englebert | #BUS311 companies might be protecting their production #databases, but what about their backup files? http://t.co/okJjV3Bm | Tue, 12 Feb 2013 01:31:52 +0000 |
NimbusData | @NimbusData CEO @tisakovich @BarclaysOnline Big Data conference in San Francisco today, talking #virtualization, #databases,& #flash memory | Mon, 11 Feb 2013 23:15:05 +0000 |
SSWUGorg | Don’t forget to sign up for our FREE expo this Friday: #Databases, #BI, and #Sharepoint: What You Need to Know! http://t.co/Ijrqrz29 | Mon, 11 Feb 2013 22:15:37 +0000 |
Таблица 5. users
full_name | username |
---|---|
Boris Hadjur | _DreamLead |
Gunnar Svalander | GunnarSvalander |
GE Software | GEsoftware |
Adrian Burch | adrianburch |
Andy Ryder | AndyRyder5 |
Brett Englebert | Brett_Englebert |
Nimbus Data Systems | NimbusData |
SSWUG.ORG | SSWUGorg |
После разделения в таблице users (Таблица 5) у нас присутствуют уникальные (не повторяющиеся) строки.
Данный процесс удаления дубликатов из строк называется приведением ко второй нормальной форме.
Вывод
Теперь, когда ваш сервер MySQL работает и вы знаете, как подключиться к серверу MySQL из командной строки, вы можете проверить следующие руководства:
MySQL Ubuntu
Этот пост является частью серии «Как установить lemp-stack-on-ubuntu-18-04». Другие посты в этой серии:
• Как установить Nginx на Ubuntu 18.04 • Как настроить серверные блоки Nginx на Ubuntu 18.04 • Защитить Nginx с помощью Let’s Encrypt на Ubuntu 18.04 • Как установить MySQL на Ubuntu 18.04 • Как установить PHP на Ubuntu 18.04
Узнайте больше о Gatekeeper и о том, как использовать его для установки самых безопасных приложений на ваш Mac.
Узнайте, как настроить и установить принтер HP Officejet 6500A Plus «все в одном».
MySQL Workbench — это кроссплатформенное графическое приложение для администраторов и архитекторов баз данных MySQL. В этом уроке мы покажем вам, как установить и MySQL Workbench на Ubuntu 18.04.