3
我需要構建一個複雜的查詢,我更願意使用raw postgres。但查詢返回sqlalchemy.engine.result.ResultProxy
對象,當我遍歷每個這些對象是sqlalchemy.engine.result.RowProxy
對象如何在SQLAlchemy中執行原始SQL查詢並在Flask中使用模型對象
search_term = "%{0}%".format(d)
items = db.engine.execute("SELECT inventory.id,inventory.location,inventory.amount,inventory.units, plant_material.variety FROM inventory LEFT JOIN plant_material ON inventory.plant_material_id = plant_material.id WHERE plant_material.variety ILIKE %s", (search_term))
本標準查詢將返回我的棉花糖定義我的模型對象,<class 'app.models.Inventory'>:
Inventory.query.filter(Inventory.common_name.like(search_term)).limit(10)
如何我可以返回models.Inventory對象並使用原始的sql?
如果你是好奇我的模型定義,看看這個gist
你_could_只使用查詢API :)'Session.query(庫存) .outerjoin(PlantMaterial,PlantMaterial.id == Inventory.plant_material_id).filter(PlantMaterial.variety.ilike(search_term))。all()'否則抱歉不知道答案,想知道是否有辦法。我想你可以遍歷行並自己初始化對象。 – Lee
我有這樣的情況我自己。我最終要做的是使用查詢api進行第二次查詢,並在第一個查詢返回的基礎上使用'in_' ...效率非常低。想知道是否有更好的方法,很好的問題。 – Lee
@lee謝謝。剛發佈這個問題後,我結束了對API的查詢。我仍然很好奇,因爲API有自然的限制。 –