簡體   English   中英

如何在sqlalchemy中為select語句提供列列表?

[英]How to give column list for select statement in sqlalchemy?

下面的代碼用於從“消息”中選擇“國家”,“性別”,其中〜

    users = session.query(
        Message.country,
        Message.gender,
    ).filter(
        Message.date_joined.between(begin_date, end_date),
    ).all()

當我用這個嘗試sql

    columns = (
        Message.country,
        Message.gender,
    )

    users = session.query(
        columns
    ).filter(
        Message.date_joined.between(begin_date, end_date),
    ).all()

我有錯誤

sqlalchemy.exc.InvalidRequestError: SQL expression, column, or mapped entity expected - got '(<sqlalchemy.orm.attributes.InstrumentedAttribute object at 0x117f215c8>, <sqlalchemy.orm.attributes.InstrumentedAttribute object at 0x117f21518>)'

我以為如果我給定參數為元組,那將是可能的,但是有例外。

如何為查詢提供列作為變量?

列應該是列表的一部分,並使用load_only

from sqlalchemy.orm import load_only
columns = ['country', 'gender']

companies = session.query(Message).options(load_only(*columns)).filter(
             Message.date_joined.between(begin_date, end_date)).all()

您也可以嘗試with_entities

columns = [Message.country, Message.gender]
companies = session.query(Message).filter(
                 Message.date_joined.between(begin_date, end_date)).with_entities(*columns).all()

暫無
暫無

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

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