Работа с базой данных PostgreSQL из Blender

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

Подготовка Blender к работе с базой данных PostgreSQL

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

Установим необходимые нам для работы пакеты модулей прямо в директорию установки Blender. Это нужно проделать только один раз, после чего мы в любом скрипте, аддоне или просто в текстовом редакторе Text Editor в Blender сможем получить к ним доступ при помощи стандартной команды импорта import.

Самым популярным модулем для взаимодействия с базой данных PostgreSQL является Psycopg.

Для того, чтобы установить этот модуль, запустим Blender с правами администратора (“Запуск от имени Администратора” в ОС Windows или с правами root в ОС Linux).

Откроем окно Text Editor и введем следующий код:

Нажатием на кнопку со стрелкой “Run Script” выполним его.

После завершения установки, мы сможем использовать установленный модуль, импортировав его:

Работа с базой данных PostgreSQL через Blender Python API

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

Для наладки соединения с базой нам понадобятся следующие данные:

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

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

Создадим соединение с базой данных:

Весь обмен данными с базой PostgreSQL ведется через специальный объект соединения cursor.

Для начала создадим в базе данных таблицу с именем blender_objects и двумя полями – name и location, в которые в дальнейшем сможем помещать имена и координаты местоположения объектов в сцене.

Обратите внимание на то, что мы два раза использовали конструкцию with.

C соединением:

Это нужно для того, чтобы транзакция автоматически закоммитилась. Автокоммит в этом случае вызывается сразу после завершения блока кода внутри with.

Соединение при этом не закрывается и остается открытым для дальнейшего использования.

С объектом cursor:

Это нужно, чтобы курсор автоматически закрылся по завершении выполнения кода внутри блока with.

Создав таблицу, мы можем заполнять ее данными.

Занесем в таблицу имя и координаты текущего активного объекта в сцене (если сцена пустая – предварительно добавим в нее любой меш, например, куб: shift + a – Mesh – Cube)

В инструкции INSERT мы использовали два именованных параметра %(name)s и %(location)s), значения которым задали в словаре, следующем за самой инструкцией. Имена ключей словаря name и location должны соответствовать именам параметров в инструкции INSERT.

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

Теперь мы можем получить данные из таблицы обратно в Blender:

Мы получили данные из базы и занесли результат выполнения запроса в переменную rows.

Теперь мы можем установить координаты для текущего активного объекта равные координатам, полученным из базы.

После завершения работы с базой данных соединение нужно закрыть:

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии