3

私はいくつかのsqlalchemyクエリを持っています:

>>> items = (
    Company.query
    .add_column(Address.city)
    .join(Company.address)
    .filter(and_(
        ...some filters...
    ))
    .all()
)
>>> items
[(Company(6239), Berlin), (Company(5388), Moscow), ...]

Address.city をエンティティ Company に設定するには、どうすればクエリを変更できますか? 私はそれを次のように見せたい:

...
>>> items
[Company(6239), Company(5388), ...]
>>> items[0].city
Berlin

ありがとうございました。

4

1 に答える 1

4

モデルを変更せずにクエリで直接実行できるとは思いません。
ただし、コードでこれを簡単に実現できます。

>>> items
[(Company(6239), Berlin), (Company(5388), Moscow), ...]

>>> # set company
>>> for (_company, _city) in items:
        _company.city = _city
>>> # remove city attribute
>>>> items = [_company for (_company, _city) in items]

>>> items
[Company(6239), Company(5388), ...]
>>> items[0].city
Berlin
于 2012-07-04T15:17:39.240 に答える