Столбец с псевдонимом SQLAlchemy «объект типа« MiscUnit »не имеет атрибута« codeLabel »» - PullRequest
0 голосов
/ 30 апреля 2020

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

id|run_id|diesel_engine_installed_power|diesel_engine_installed_power_unit_id|pv_installed_power|pv_installed_power_unit_id|battery_capacity|battery_capacity_unit_id|
--|------|-----------------------------|-------------------------------------|------------------|--------------------------|----------------|------------------------|
 1|      |                          300|                                    1|               200|                         1|            1000|                       4|
 2|   484|                          300|                                    1|               200|                         1|            1000|                       4|

Для этого я пытаюсь создать псевдоним различные столбцы единиц при запросе их в SQLAlchemy:

diesel_engine_installed_power_MiscUnit = aliased(MiscUnit)
pv_installed_power_MiscUnit = aliased(MiscUnit)
battery_capacity_MiscUnit = aliased(MiscUnit)

mg_res = session.query(ProcRun, ProcMemoGridInput, diesel_engine_installed_power_MiscUnit, pv_installed_power_MiscUnit, battery_capacity_MiscUnit). \
            with_entities(
                ProcRun,
                ProcMemoGridInput,
                diesel_engine_installed_power_MiscUnit.codeLabel.label("diesel_engine_installed_power_MiscUnit"),
                pv_installed_power_MiscUnit.codeLabel.label("pv_installed_power_MiscUnit"),
                battery_capacity_MiscUnit.codeLabel.label("battery_capacity_MiscUnit")
            ). \
            filter(ProcRun.id == ProcMemoGridInput.run_id). \
            filter(ProcRun.id == 484). \
            filter(ProcMemoGridInput.diesel_engine_installed_power_unit_id == diesel_engine_installed_power_MiscUnit.id). \
            filter(ProcMemoGridInput.pv_installed_power_unit_id == pv_installed_power_MiscUnit.id). \
            filter(ProcMemoGridInput.battery_capacity_unit_id == battery_capacity_MiscUnit.id). \
            one()

Он основан на этом решении:

Использование «псевдонимов» в SQLAlchemy ORM

Но это говорит мне, что AttributeError: type object 'MiscUnit' has no attribute 'codeLabel'. Я не очень понимаю, в чем разница, насколько я понимаю, это тот же процесс для псевдонима объекта MiscUnit ORM.

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