SQLAlchemy запрос - PullRequest
       9

SQLAlchemy запрос

0 голосов
/ 22 декабря 2009

Я работаю над веб-приложением и базой данных, которая занимается следующими сущности: компьютеры, компьютерные контейнеры (computer_sets) и правила. Это инструмент управления брандмауэром. У меня есть некоторые проблемы, связанные с компьютерные объекты, потому что эти компьютеры хранятся в computer_set не являются теми же объектами, что и те компьютеры, которые не содержатся в computer_set: автономный компьютер может быть в правиле, но computer_set компьютер не может быть правилом, т. е. только контейнер разрешено быть в правиле (я знаю, я знаю, это беспорядок, но я не сделал создать брандмауэр, я просто программирую инструмент управления:).

Я создал БД (с SQLite) и использую SQLAlchemy. Таким образом, я создал классы Computer, ComputerSet, ComputerSetComputer и Rule и соответствующие таблицы , Теперь в моем приложении мне нужно перечислить все эти компьютерные объекты. Однако, когда я запрашиваю таблицу компьютеров, я получаю объекты компьютера и когда я запрашиваю свою таблицу computerset_computers, я получаю ComputerSetComputer объекты. Я хотел бы получить объект запроса, содержащий все мои компьютеры независимо от того, принадлежат они или нет к набору компьютеров. это Кстати, я мог бы нарезать объект запроса и сделать нумерацию страниц. Есть идеи? Я мог бы изменить свой дизайн БД, хотя я не могу изменить базовые концепции компьютера, Правило, .etc.

Спасибо за ваше время, gsandorx :)

1 Ответ

1 голос
/ 22 декабря 2009

Я вижу два пути решения этой проблемы: использовать объединение в низкоуровневых запросах или использовать наследование в определении модели. Я думаю, что позже удобнее, так как вы получаете объекты модели из запросов. Предполагая, что у вас есть ComputerBase абстрактный класс и два его подкласса Computer и ComputerSetComputer, session.query(ComputerBase).all() вернет смешанный список всех Computer и ComputerSetComputer объектов.

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