に追加されたとき、あなたはこのような特定の行を選択することができます照会し、不要な列を追加します。モデルから列記述子を追加できます。この場合、len(q.column_descriptions)
という値が1です。SQLAlchemyのは、外部キーテーブルはSQLAlchemyのクエリで
しかし、外来キーである列を追加するとすぐに、私はそれらを求めなかったとしても、テーブルのすべての列を突然取得します。
q = dbsession.query(models.Equipment.name, models.Equipment.model)
これは、2つの列でなければなりませんが、今len(q.column_descriptions)
は15である(この表のために、それはそれらのすべてに加えてaddidtional一つです)。
クエリ(q.statement)はこのように見える終わる:
SELECT public.equipment.name, public.equipment.id, public.equipment.model_id, public.equipment.serno, public.equipment.location_id, public.equipment.sublocation, public.equipment.addeddate, public.equipment.comments, public.equipment.language_id, public.equipment.owner_id, public.equipment.vendor_id, public.equipment.account_id, public.equipment.parent_id, public.equipment.active
FROM public.equipment
私は、これはSQLAlchemyのバグであると思うが、多分私はそれが何であるかを知っているかもしれません、ここで何か間違っ誰かがやっています。
ありがとうございました。だから、それは "期待された"振る舞いです。しかし、完全な行 's.query(Equipment)'をインクルードすると、期待通りにその列の外部キーIDを取得するだけなので、奇妙です。しかし、その列だけを選択しようとすると、とにかく行全体が得られます。それは私が期待するものではありません。とにかく、それは何らかの方法で(おそらくちょうど全体の行をフェッチし、クライアントコードの列を選ぶ)それを回避することが解決策であるようです。 – Keith
私はこのようなクエリをどのようにして、整数(外部キーID)として列の値を取得することができるか提案はありますか? – Keith
@Keith外部キーIDを要求する理由は何ですか? 'q = dbsession.query(models.Equipment.name、models.Equipment.model_id)' – lambacck