2017-01-23 16 views
0

Я работаю с существующей схемой о боевых данных в видеоигре, потому что мне приходится работать с данными, создаваемыми внешней программой. Эта схема не технически совместима с тем, как я хочу организовать данные, но она в основном работает.Создайте сущность путем суммирования данных в SqlAlchemy

Одна проблема, которая появляется 3 раза (до сих пор), предоставляет пользователю большую таблицу данных для просмотра/поиска, чтобы начать просеивать доступные данные. Итак, я решил создать один общий способ генерации таблицы данных и обрабатывать запросы AJAX для получения большего количества данных в этой таблице.

Проблема в том, что один из этих случаев в основном извлекает данные прямо из таблицы, а другой фактически извлекает обобщенные данные из таблицы. Например, схема определяет «боевое» или участника боя, но я хочу, чтобы система выставляла концепцию «характера» или вещь, которая существует и участвует во многих битвах. Таким образом, Character будет Combatant в нескольких, разных Encounter s.

В основном я могу создать идею персонажа из базы данных. Я могу либо использовать представление, либо я могу заставить ORM (SQLAlchemy) каждый раз создавать требуемый запрос с нуля. Просмотр поддержки возможен в SQLAlchemy через некоторый possible extensions, но поскольку я обобщаю, я теряю первичный ключ, и поэтому я не могу создать класс ORM, представляющий представление. Предположительно, вы можете заставить столбец быть первичным ключом, но это не сработало для меня (казалось, ничего не делал). Если я попытаюсь использовать запрос с нуля, мой текущий способ генерации общей таблицы не работает из-за отсутствия возможности проверить (...) результат запроса.

Итак, у меня есть два вопроса, и a MCVE для подхода запросов с нуля:

  1. Am I, принимая подход к решению этой проблемы, как известно, плохо?

  2. Есть ли способ избежать использования проверки (...), которая позволяет мне использовать произвольные строки для получения значений из объекта результата запроса?

Некоторые заметки о MCVE:

  • Я урезанная количество объектов ORM, столбцы в каждой, а также информацию о конфигурации в списках столбцов. Списки столбцов уродливы в их первоначальной форме.

  • Где двойные вложенные петли for находятся в MCVE, в моем фактическом коде есть система шаблонов. Веб-сервер, генерирующий HTML, все обычные забавы были удалены, чтобы сосредоточиться на SQLAlchemy.

ответ

0

Я получил решение, используя this code for Materialized Views. Таким образом, все агрегирование выполняется БД, а SQLAlchemy просто рассматривает представление как другое, которое можно выбрать.