簡體   English   中英

如何使用 SQLAlchemy 在 Flask 中執行原始 sql 查詢和使用模型對象

[英]How to execute raw sql query and use model objects in Flask with SQLAlchemy

我需要構建一個復雜的查詢,我更喜歡使用原始 postgres。 但是查詢返回一個sqlalchemy.engine.result.ResultProxy對象,當我遍歷這些對象時,每個對象都是一個sqlalchemy.engine.result.RowProxy對象

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))

這個標准查詢返回我在 Marshmallow 中定義的模型對象, <class 'app.models.Inventory'>:

Inventory.query.filter(Inventory.common_name.like(search_term)).limit(10)

如何返回models.Inventory 對象並使用原始sql?

如果您對我的模型定義感到好奇,請查看此要點

你可以使用這樣的東西:

query = db.engine.execute("SELECT inventory.id...")
for row in query:
    print(row['id'])
    ...

https://docs.sqlalchemy.org/en/14/orm/queryguide.html#selecting-orm-entities-and-attributes

from sqlalchemy.sql import text, select
db.session.execute(select(ModelClass).from_statement(text("SELECT ..."))).scalars().all()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM