0

SQLAlchemy(ORM)で次のリクエストを実行しようとしています:

SELECT id、ref_prog FROM stepvand_1c_1t.equipment_day_hour WHERE id IN(SELECT id FROM stepvand_1c_1t.equipment WHERE Equipment_type ='L')

やった :

subq = session.query(Equipment)
subq = subq.filter(Equipment.equipment_type == "L").subquery()

query = session.query(EquipmentDayHour)
query = query.filter(EquipmentDayHour.id.in_(subq))

しかし、それはうまくいきません...

Pythonは、サブリクエストの列が多すぎると言っています。

4

1 に答える 1

1

サンプル コードの 1 行だけを変更する必要があると思います。

# error: includes all columns of Equipment
`subq = session.query(Equipment)`
# correct: include only ID column
`subq = session.query(Equipment.id)`

ただし、サブクエリなしでこれを実行できると思います。

query = (session.query(EquipmentDayHour).
         # version-1: if you have a relationship between EquipmentDayHour and Equipment
         join(Equipment).
         # version-2: if you do not have such relationship
         #join(Equipment, EquipmentDayHour.id==Equipment.id).
         filter(Equipment.equipment_type == "L")
        )
于 2012-06-26T13:08:12.520 に答える