3

I am trying to get a row from my database, which contains multiple columns which are each paired with a unit id column, like so:

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|

To do so, I am trying to alias the various unit columns while querying them in 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()

It is based on this solution:

Usage of "aliased" in SQLAlchemy ORM

But it tells me that AttributeError: type object 'MiscUnit' has no attribute 'codeLabel'. I don't really understand what the difference is, from what I understand this is the same process for aliasing the MiscUnit ORM object.

wfgeo
  • 2,716
  • 4
  • 30
  • 51

0 Answers0