Базы данных в Afina#
В этом гайде вы разберетесь, как работать с базами данных в Afina: как создать или подключить базу, как управлять таблицами и записями, как импортировать и экспортировать данные, а также как использовать базу данных в логике скрипта. Это нужно для удобного хранения структурированных данных и для автоматизации сценариев, где скрипт должен читать, обновлять или проверять записи.
Перед началом#
База данных, или БД, - это структурированное хранилище информации.
Данные в ней хранятся не хаотично, а в четкой структуре, чтобы их было удобно:
- находить;
- добавлять;
- обновлять;
- удалять;
- использовать в автоматизации.
В контексте Afina в базе данных чаще всего хранят:
- адреса кошельков;
- балансы;
- списки аккаунтов или адресов;
- статусы обработки;
- лог или историю действий;
- технические данные, которые скрипт должен читать или обновлять.
В Afina база данных используется как локальный файл .db.
Это удобно, потому что:
- не требуется отдельное серверное подключение;
- работа идет локально и быстро;
- база лучше подходит для массового чтения и записи;
- ее удобно переносить, копировать и использовать в разных скриптах.
Базовый и основной формат в этом сценарии - SQLite.
SQLite - это база данных, в которой все хранится в одном файле. Примеры названий:
database.db;wallet.db;accounts.db.
Главное преимущество SQLite в том, что для нее не нужен отдельный сервер. Именно поэтому она хорошо подходит для локальной работы в Afina.
Раздел «Базы данных» в Afina нужен для полной базовой работы с БД. Здесь можно:
- создать новое подключение к базе;
- подключить уже существующий
.db-файл; - просматривать список баз;
- группировать базы по папкам;
- открывать базу для работы с таблицами;
- создавать таблицы;
- добавлять и редактировать записи;
- запускать SQL-запросы;
- импортировать и экспортировать базу;
- работать с таблицами внутри базы.
Создание и подключение базы#
- Перейдите в раздел Базы данных.
На скриншоте ниже показан раздел «Базы данных» в табличном режиме со списком подключений.
- Нажмите Добавить базу данных, если хотите создать новую базу или подключить существующую.
На следующем скриншоте показана кнопка «Добавить базу данных» в разделе «Базы данных».
- В поле «Название подключения» введите название подключения.
Поле «Название подключения» является обязательным. Если оно пустое, кнопка «Сохранить» будет неактивной.
-
Проверьте, что в поле «Тип базы данных» выбран
SQLite. -
Нажмите Сохранить, если хотите создать новое подключение к локальной базе данных.
После этого Afina создаст новое подключение к локальной базе данных.
-
Включите переключатель «Использовать существующий .db файл», если нужно подключить уже готовый
.db-файл. -
Укажите путь к нужному
.db-файлу. -
Нажмите Сохранить, чтобы подключить существующую базу.
После этого Afina начнет работать с уже готовой базой данных.
На этом скриншоте показано окно «Создать базу данных» с названием подключения, типом SQLite и режимом для подключения существующего .db-файла.
Импорт и экспорт базы#
SQL dump - это резервная копия базы данных в SQL-формате.
В таком файле хранятся:
- структура таблиц;
- SQL-команды для создания базы;
- записи, которые есть в таблицах.
SQL dump нужен, чтобы:
- восстановить базу;
- передать ее другому человеку;
- перенести на другой ПК;
- сохранить полную резервную копию перед изменениями.
-
Наведите курсор на нужную базу данных, если хотите импортировать
SQL-файл в уже существующую.db-базу. -
Нажмите кнопку импорта
SQL-файла. -
Выберите локальный
SQL-файл.
После этого SQL-файл будет импортирован в существующую базу данных.
Перед импортом желательно убедиться, что база не используется другим активным процессом.
На скриншоте ниже показан список баз данных с подсвеченной кнопкой импорта SQL-файла в строке нужной базы.
-
Наведите курсор на нужную базу данных, если хотите экспортировать ее текущее состояние.
-
Нажмите Скачать дамп.
-
Выберите нужный вариант экспорта.
Чаще всего используют SQL-экспорт всей базы.
На следующем скриншоте показано меню экспорта базы данных с вариантами полного экспорта, только схемы или только данных.
Полный SQL-экспорт подходит для:
- резервного копирования;
- переноса базы;
- передачи другому пользователю;
- восстановления базы в будущем.
Также для импорта или экспорта можно просто переносить сам файл .db, который вы создали или получили от другого человека.
Удаление и открытие базы#
-
Найдите нужную базу данных в таблице.
-
Нажмите иконку ⋮ в карточке или строке базы данных.
-
Выберите Удалить базу данных.
-
Нажмите Подтвердить.
После этого база данных будет перемещена в корзину баз данных.
На скриншоте ниже показано меню действий базы данных с пунктом «Удалить базу данных».
-
Нажмите Фильтры, если хотите открыть корзину баз данных.
-
Включите переключатель «Показать только удаленные».
-
Отметьте чекбоксом нужную базу данных в списке удаленных.
-
Выберите Удалить без восстановления, если хотите окончательно удалить базу.
-
Нажмите Подтвердить.
На следующем скриншоте показан список удаленных баз данных с действием «Удалить без восстановления».
Удаление базы данных является необратимым действием. Если база еще может понадобиться, сначала сделайте SQL dump.
-
Найдите нужную базу в списке, если хотите открыть ее для работы.
-
Откройте базу из таблицы или карточки.
-
Перейдите в рабочую область.
Именно в рабочей области вы уже работаете с таблицами и записями.
На этом скриншоте показан список баз данных с иконкой открытия менеджера базы данных.
Таблицы и типы данных#
Таблица - это набор строк и колонок.
Именно таблицы хранят все данные базы.
Например, отдельными таблицами можно хранить:
- кошельки;
- балансы;
- статусы;
- историю действий;
- вспомогательные технические данные.
Для базовой работы достаточно понимать такие типы:
INTEGER- целые числа;REAL- дробные числа;TEXT- текстовые значения;BLOB- двоичные данные;NULL- отсутствие значения;NUMERIC- числовой или универсальный тип, если интерфейс его поддерживает.
Самые важные ограничения:
NOT NULL- значение обязательное;DEFAULT- значение по умолчанию;UNIQUE- запрет дублей;PRIMARY KEY- уникальный идентификатор строки;AUTOINCREMENT- автоматическое увеличение значения, если это полеid.
Простые практические примеры:
- адрес кошелька часто делают
UNIQUE; - поле
statusчасто имеетDEFAULT 0; - поле
idобычно делаютPRIMARY KEYиAUTOINCREMENT.
Создание и изменение таблиц#
-
В левой панели «Таблицы» нажмите иконку +, если нужно создать таблицу вручную.
-
В окне «Создание таблицы» введите название таблицы.
-
Нажмите Добавить поле.
-
Для каждого поля задайте название.
-
Для каждого поля выберите тип.
-
При необходимости задайте дополнительные свойства.
-
При необходимости включите переключатели «Первичный ключ», «Не NULL», «Уникальное» и «Автоинкремент».
-
Нажмите Создать таблицу.
Таблицу не получится создать, пока не задано ее название и хотя бы одно поле с названием и типом.
На скриншоте ниже показано окно «Создание таблицы» с полями, типами и дополнительными свойствами.
- Нажмите иконку редактирования в строке таблицы, если нужно изменить ее структуру.
Через иконку редактирования обычно можно:
- изменить название таблицы;
- добавить новые поля;
- удалить лишние поля;
- изменить свойства полей.
- Нажмите иконку корзины в строке таблицы, если нужно удалить таблицу полностью.
После удаления таблицы исчезнут и все записи внутри нее. Это необратимое действие.
На следующем скриншоте показана строка таблицы с иконками добавления записи, редактирования и удаления таблицы.
Добавление и редактирование записей#
Есть два основных способа добавления данных в таблицу.
Вручную через интерфейс Этот вариант подходит, если записей немного, нужно быстро проверить логику или вы создаете тестовые данные.
-
Выберите таблицу.
-
Нажмите иконку добавления записи.
-
Заполните поля.
-
Нажмите Добавить запись.
На скриншоте ниже показано окно «Создание записи» для добавления новой строки.
Через импорт или вставку подготовленных данных
Этот вариант подходит, если данных много, они уже есть в Google Sheets или другой таблице, и нужно быстро загрузить большое количество записей.
-
Скопируйте нужные данные в
Google Sheetsв таком формате, чтобы поля соответствовали полям в таблице Afina. -
Вставьте данные через
Ctrl+Vв одно из полей. -
Нажмите Сохранить.
На этом скриншоте показана таблица с новой строкой после вставки данных и кнопкой сохранения изменений.
-
Нажмите дважды левой кнопкой мыши на нужное поле в гриде данных, если нужно отредактировать запись.
-
Измените значение так, как вам нужно.
-
Используйте пакетные действия, если у вас выбрано несколько строк через чекбокс.
В таком режиме могут быть доступны действия:
- сохранить изменения;
- отменить изменения;
- удалить выбранные записи.
На следующем скриншоте показан грид данных с выбранной строкой и пакетными действиями сохранения, отмены и удаления.
SQL и работа в скрипте#
Кроме работы через интерфейс, в Afina можно работать с SQL напрямую.
Это делается через компонент Database в скрипте или через «Терминал запросов» в самой базе данных.
Для базовой автоматизации достаточно знать 4 команды:
SELECT- получить данные;INSERT- добавить запись;UPDATE- обновить запись;DELETE- удалить запись.
На практике чаще всего используются:
SELECT, чтобы проверить, существует ли запись;INSERT, чтобы создать новую запись;UPDATE, чтобы изменить уже существующие данные.
Подключение к базе лучше выносить в отдельный блок в начале скрипта.
Это важно, потому что так:
- подключение задается один раз;
- дальше оно используется по всему скрипту;
- при изменении базы не нужно править много мест;
- логика скрипта становится понятнее.
-
Перейдите на холст скрипта.
-
В «Панели компонентов» найдите компонент «База данных подключений».
-
Перетащите его на холст в начало логики или в ту часть, где начинается работа с базой.
-
В поле «Тип базы данных» выберите
SQLite. -
В поле «Выбрать подключение» выберите нужную базу данных из списка.
-
В поле *«Сохранить в » укажите название переменной, в которую будет сохранено подключение.
-
Нажмите Сохранить.
После этого в скрипте появится отдельный блок подключения, и дальше его можно будет использовать в других компонентах, которые работают с базой данных.
На скриншоте ниже показан компонент «База данных подключений» на холсте скрипта с выбранным типом SQLite и подключением.
Компонент Database в скрипте обычно содержит:
- выбор типа базы данных;
- выбор подключения;
- поле SQL-запроса;
- сохранение результата в переменную.
Базовая логика такая:
- выбираете подключение;
- задаете SQL-запрос;
- выполняете его;
- сохраняете результат в переменную;
- используете результат в следующих блоках.
На следующем скриншоте показан компонент «База данных» на холсте скрипта с подключением SQLite, SQL-запросом и переменной для результата.
Запросы в Afina можно создавать:
- вручную;
- через встроенный конструктор;
- через
ChatGPTили встроенныйGPT, если вы настроилиAPI ChatGPTв Afina.
Конструктор удобен для старта, потому что помогает без ошибок собрать:
SELECT;INSERT;UPDATE;DELETE.
Тестирование запросов и результатов#
-
Добавьте на холст компонент «База данных», если хотите протестировать SQL-запрос отдельно.
-
В поле «Тип базы данных» выберите
SQLite. -
В поле «Выбрать подключение» выберите нужную базу данных.
-
В поле *«Запрос » введите SQL-запрос, который хотите проверить.
Для теста удобнее всего начинать с простого SELECT, например SELECT * FROM emails.
-
В поле *«Сохранить в » укажите название переменной, в которую будет сохранен результат, например
emails. -
Нажмите кнопку тестирования или выполнения запроса в компоненте.
-
Просмотрите результат выполнения запроса.
Если запрос корректный, вы сразу увидите результат в виде массива записей.
Это удобно, потому что можно:
- проверить, правильно ли подключена база;
- увидеть, какие именно данные возвращает
SELECT; - сразу найти ошибку в синтаксисе или названии таблицы;
- не запускать весь скрипт ради проверки одного запроса.
На скриншоте ниже показано окно «Тестовый запрос» с SQL-запросом SELECT и кнопкой выполнения.
На следующем скриншоте показан результат тестового SQL-запроса в виде массива записей.
Результат SELECT в Afina обычно приходит как массив строк.
Если вы сохранили результат в переменную emails, обращение к значениям выглядит так:
${emails[0].email};${emails[0].address};${emails[0].balance}.
Здесь:
[0]- первая строка результата;.email,.address,.balance- названия колонок.
Условие в IF лучше строить не по всему массиву, а по конкретному полю.
Например:
- существует ли
${emails[0].address}; - существует ли
${emails[0].balance}.
Именно так обычно решают:
- делать
INSERT; - делать ли
UPDATE.
Результат#
После выполнения этих действий у вас будет полный базовый сценарий работы с базами данных в Afina: вы сможете создать или подключить SQLite-базу, импортировать или экспортировать ее через SQL dump, создавать таблицы, добавлять и редактировать записи, выполнять SQL-запросы и использовать результаты в скриптах через отдельный блок подключения и компонент Database.
Признаки успешного результата
- вы понимаете, что такое база данных в контексте Afina;
- знаете, почему Afina удобно работает с локальным
.db-файлом; - понимаете, что такое
SQLite; - можете создать новую базу;
- можете подключить существующий
.db-файл; - понимаете, что такое
SQL dump; - можете создать таблицу вручную;
- можете добавить запись;
- понимаете, как работают
SELECT,INSERT,UPDATE,DELETE; - знаете, как достать значение из результата
SELECT; - понимаете, когда и зачем использовать
SQL dump.
Если что-то работает не так
- если результат
SELECTесть, но значение не достается, обращайтесь к нему в формате${вашаПеременная[0].название_колонки}; - если в таблице появляются дубликаты, добавьте
UNIQUEдля критичных полей и передINSERTпроверяйте запись черезSELECT; - если после изменения базы приходится править скрипт в нескольких местах, вынесите подключение в отдельный блок или переменную;
- если не удается создать таблицу, проверьте, что есть название таблицы и хотя бы одно поле с названием и типом;
- если импорт или экспорт работает некорректно, закройте активные процессы, проверьте файл и повторите операцию;
- если не видно нужную базу в списке, очистите поле поиска, проверьте фильтры и нажмите обновление списка.