Взаимодействие с базой данных
Содержание
- Вводная информация
- Создание новой БД
- Использование менеджера БД
- Восстановление БД
- Создание архива БД
- Вход в БД
- Выход из БД
- Автоматизация действий с БД
- Задания для самостоятельного выполнения
- Обсуждение
Вводная информация
Odoo работает совместно с СУБД PostgreSQL. На данном этапе мы не будем углубляться в технические тонкости. Я остановлюсь только на тех вещах, которые необходимы начинающему разработчику. В дальнейшем запущенный экземпляр сервера PostgreSQL я буду называть разными словами, например сервер БД, просто БД, Postgres или как-то еще.
Для того, чтобы наш экземпляр сервера odoo подключился к серверу БД нам нужно этому экземпляру как-то объяснить к какому серверу и порту подключаться, а так же с каким именем и паролем это делать.
В случае с odoo вся эта информация должна быть отображена в файле конфигурации (шаблон которого находится в каталоге templates
в каталоге менеджера управления проектами):
Поскольку для разработки мы используем менеджер управления проектами, то он сделает все за нас. Запустит контейнер с БД, задаст все необходимые настройки для него и сгенерирует конфигурационный файл на его базе. Для того, чтобы узнать как, подключиться к БД внутри контейнера, можно посмотреть в docker-compose.yml
файл, который создается в каталоге с нашим проектом. В нем будет описан сервис с именем db
:
db:
image: postgres:13
user: root
tty: true
ports:
- 5432:5432
environment:
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
- POSTGRES_DB=postgres
Здесь мы можем видеть, что для подключения к БД напрямую, например удобным клиентом к различных базам данных DBeaver или плагином к вашей IDE. Мы будем использоват порт 5432
, сервером у нас будет localhost
или 127.0.0.1
. А имя и пароль мы берем из переменных POSTGRES_PASSWORD
и POSTGRES_USER
. Подключаться к БД напрямую во время разработки частенько приходится и эта информация здесь именно для того, чтобы облегчить вам жизнь.
Создание новой БД
Поскольку, odoo сама может подключаться к БД как администратор, то она же может управлять не только данными в конкретной базе, но создавать новые базы, делать их копии, создавать архивы и удалять. Для этого в системе odoo есть менеджер баз данных. Если вы запустили сервер odoo в первый раз без указания ключа -d, то система предложит вам самостоятельно создавать БД заполнив соответствующую форму:
- Мастер-пароль - пароль от менеджера базы данных, его хеш хранится в файле конфигурации по ключу
admin_passwd
. Поскольку он не назначен, то на желтом фоне можно увидеть предложенный от системы пароль. Он потребуется если вы захотите сделать копию базы, удалить базу или загрузить новую. В общем все манипуляции с базами данных потребуют ввода пароля. Если он отсутствует в файле конфигурации, то при манипуляции с базами система его не будет спрашивать. При использовании менеджера разработки пароль не устанавливается и вы можете делать с базами все что захотите. Обратите внимание, что при создании новой базы система заставляет вас его использовать. - Имя базы данных. Вы просто вводите имя
- Email - он же логин для учетной записи администратора. Вам не обязательно вводить реальный email, более того логин не обязан быть похож на электронный адрес. Даже сами создатели по умолчанию используют admin.
- Пароль для учетной записи администратора
- Номер телефона - не обязательное поле. Ни на что не влияет.
- Язык, можете выбрать тот, который вам удобнее, но для разработки я бы рекомендовал использовать английский
- Страна - ее выбор влияет на настройки бухгалтерского учета и другие параметры, например валюта. Поэтому лучше использовать ту страну, для которой вы создаете проект
- Нужно ли устанавливать демо данные. Если стоит галочка, то система при создании новой базы добавит демо данные. Клиентов, поставщиков, создаст документы продаж и закупок. Может быть удобно при изучении в качестве примера.
Использование менеджера БД
Если же у вас уже есть несколько баз данных, то система предложит вам выбрать ту, с которой вы будете работать:
- Обратите внимание на ссылку. Вы всегда можете перейти по ней чтобы попасть в менеджер баз данных odoo
- Предупреждение о том, что не установлен мастер-пароль (для разработки я его не использую т.к. больше мешает, чем помогает). Его можно назначить нажав на кнопку
Set Master Password
(6) - Выбор базы данных, здесь вы можете ее удалить
Delete
, сделать копиюDublicate
или же загрузить себе архивBackup
. В этом случае браузер скачает файл, который содержит в себе полную копию вашй базы данных. И вы можете ее восстановить с помощью кнопкуRestore Database
- Создание базы данных. Выше уже описано, как это делать.
- Восстановление базы данных их архива. См. п. 3
- Установка мастер-пароля. Смотри п. 1 из описания картинки про создание базы данных
Восстановление БД
При восстановлении базы данных вы увидите следующее:
- Введите мастер пароль
- Выберите файл с архивом
- Введите имя базы данных
- Выберите тип копирования, если вам не понятно о чем идет речь, выбирайте верхний вариант
This database is a copy
Создание архива БД
При создании архива базы данных:
- Введите мастер пароль
- Выберите имя БД, для которой хотите сделать резервную копию
- Выберите тип архива.
zip
- включает в себя файловое хранилище, и может быть реально большим,pg_dump
- выгрузит только архив самой базы данных без файлового хранилища, может быть полезно в различных случаях, например когда файловое хранилище очень большое и для разработки оно вам не нужно
При дублировании и удалении я думаю все достаточно очевидно)
Вход в БД
После того как выбрали базу данных, у нас появится следующее окошко для входа:
- Можно выбрать другую базу данных
- Логин, который мы задавали при создании базы данных
- Пароль, который мы задавали при создании базы данных
- Перейти в менеджер управления базами данных
Выход из БД
Чтобы выйти из базы данных нужно нажать следующую кнопку:
- Нажмите в правом верхнем углу на имя пользователя
- В появившемся меню нажмите
Выйти
илиLogout
Автоматизация действий с БД
При использовании менеджера разработки есть возможно автоматизировать рутинные действия:
- Если вы испольуете ключ
-d
и указываете имя базы данных, то система проверит существует ли база с таким именем, и если есть, запустит систему в режиме работы с одной базой. Если базы данных не существует, то она будет создана. - При автоматическом создании базы данных вы может заранее задать параметры в файле конфигурации для создания базы данных. Смотрите ключ
db_creation_data
в документации и файле конфигурации - Вы так же можете автоматически удалить базу данных с указанным именем с помощью параметров командной строки. Читайте документацию
- Можно так же делать архив базы данных и восстанавливать базу данных из предоставленного вам архива, для этого достаточно положить его в каталог, который указан в
.env
файле по ключуBACKUP_DIR
. При создании архива вашей базы данных, новый архив появится в этом же каталоге. Имя архива обычно выглядит какимя_базы_дата_время
.
Примеры:
Запустить в режиме монобазы или создать новую с именем db-name-16
и установить модули в файле конфигуркции по ключу init_modules
и обновить модули указанные в файле конфигурации по ключу update_modules
python3 /path/to/your/project/docker_start.py -d db-name-16 -i -u
Удалить базу данных, создать сразу с таким же именем, установить модули в файле конфигурации по ключу init_modules
и обновить модули указанные в файле конфигурации по ключу update_modules
python3 /path/to/your/project/docker_start.py -d db-name-16 -i -u --db-drop db-name-16
Восстановить архив с именем db_name_16_2023_12_12_12_12_12
, присвоить имя базе данных db-name-16
и установить модули в файле конфигуркции по ключу init_modules
и обновить модули укзанные в файле конфигурации по ключу update_modules
. Архив с таким именему будет искаться в каталогe, который указан в .env
файле по ключу BACKUP_DIR
python3 /path/to/your/project/docker_start.py -d db-name-16 -i -u --db-restore db_name_16_2023_12_12_12_12_12
Задания для самостоятельного выполнения:
- Запустите систему без ключа
-d
. Создайте базу данных из менеджера БД. Укажите в качестве имени базыmy_new_database-16
, в качестве логина администратораnew_admin
, и паролемnew_password
- Войдите в эту базу
- Выйдите из нее
- Создайте резервную копию -
zip
архив - Удалите базу
my_new_database-16
- Восстановите из резервной копии базу с именем
my_new_database_2-16
- Войдите в нее
- Выйдите из нее
- Удалите все базы данных
- Создайте базу данных с использованием менеджера разработки
- Войдите в нее
- Удалите ее с использованием менеджера разработки
Обсуждение
Обсудить, указать на ошибки и опечатки можно здесь