LoginSignup
2
1

More than 5 years have passed since last update.

SQLAlchemyのqueryで項目を1つだけ指定すると要素数1のタプルが返るよ

Posted at

標題のとおりです。最近、たまにインターンの人が引っかかっているのを見るので。

tekito.py
s = Session()
names = s.query(SomeTable.name).filter(SomeTable.id.in_([1, 2, 3])).all()
Session.remove()
# flaskでjsonにして返す
# return jsonify({'names': names})

これ、returnする前にnamesをprintすると…

[('taro',), ('jiro',), ('sabu',)]

ファッ!?
まあ、一般にはSQLで一つだけを取ってくるということは少なく、複数の項目を取ってきたときにはタプルになるのが自然なので分かるのですが、取得項目が一つでも、要素数1のタプルになります。ご注意下さい。

ただのリストにしたい場合は[name[0] for name in names]など。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1