Подключение к базе данных MySQL из Blender

Хранение информации в удаленной базе данных стало обычной практикой при разработке программных продуктов. Blender — не исключение. При написании скриптов и аддонов, разработчик может столкнуться с необходимостью обращения к базе данных, чтобы получить из нее или записать в нее необходимые данные. MySQL на сегодня является одной из самых распространенных и общедоступных баз данных и хорошо подходит для работы с Blender.

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

В базовой комплектации Blender Python отсутствует модуль связи с базой данных — MySQL Connector. Нужно его установить:

  1. С официального сайта MySQL необходимо скачать MySQL Connector для Python:
    1. Для этого нужно перейти по ссылке: https://dev.mysql.com/downloads/connector/python/
    2. В пункте Select Operating System
      1. выбрать Platform Independent
    3. Скачать архив с модулем MySQL Connector: Platform Independent (Architecture Independent), ZIP Archive Python
  2. Распаковать архив во временную директорию, например на диск D:/
  3. Из распакованного архива из D:/mysql-connector-python-2.1.5/lib/ скопировать директорию mysql в директорию lib Blender. Если Blender располагается в C:/Program Files, директорию mysql нужно скопировать в C:/Program Files/blender-2.78c-windows64/2.78/python/lib/.

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

Подключив для работы с API Blender внешнюю IDE PyCharm или же просто воспользовавшись встроенным текстовым редактором, напишем код для обращения к базе данных MySQL:

  1. Импортируем необходимые модули: bpy — для взаимодействия со сценой, mysql.connector — для работы с базой данных

  1. Определим параметры для подключения к базе данных:

user — пользователь базы данных MySQL. Можно указать администратора — root, или же другого, специально созданного, пользователя.

password — пароль пользователя базы данных. _PASSWORD_ необходимо заменить на реальный пароль для указанного в user пользователя.

host — указание на место размещения базы данных. Может указываться в виде адреса (www.test.ru), ip (192.168.0.1) или localhost (база размещена на локальном компьютере).

database и table — имя базы данных и таблицы в ней. Могут быть любыми.

  1. Создадим подключение к MySQL и курсор, через который будут выполняться запросы:

  1. Создадим базу данных с указанным выше именем (‘blender’) и выберем ее для работы:

  1. Создадим таблицу в выбранной базе данных:

Таблица состоит из одного текстового поля «name» на 50 символов.

  1. Добавим в сцену несколько разных объектов (UV Sphere, Cube и т.д.)
    1. shift+a — Mesh — …
  2. Добавим в текст скрипта запрос, который занесет в созданную выше таблицу имя выделенного объекта сцены:

По умолчанию автозавершение запросов в mysql connector отключено, поэтому после выполнения запросов insert, update и т.п. необходимо закрывать их вручную командой commit().

Если предварительно включить автозавершение,

выполнять завершающий commit не нужно.

  1. Для проверки того, что имя выделенного объекта действительно занесено в таблицу созданной базы данных, можно выполнить запрос, возвращающий ее содержимое:

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

  1. После завершения работы с MySQL необходимо закрыть созданный курсор и подключение:

 

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

Для проверки его работы можно несколько раз выделить в сцене разные объекты, каждый раз после выделения запуская скрипт. В результате будет создана база данных «blender», внутри которой будет создана таблица «test», в которую будет занесено несколько имен объектов. Финальный вывод в системную консоль будет выглядеть так: