0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

メモ: Psycopg2 で配列に集約した結果をリストとして受け取るには、クエリに型をつければいい

Posted at

時間がないので、ざっとメモ。

背景: PostgreSQL の array_agg は配列として集約する集約関数

こんな感じでユーザ user_id の通った学校の一覧 (school 列を配列にしたもの) を返すことができる。

select user_id, array_agg(school) as schools
from ...
where ...
group by user_id

これを psycopg2 で単純に受け取ろうとすると、{'foo','bar'} のような配列の文字列表現が得られる。

問題: これを psycopg2 でリストとして受け取るには?

Python で扱うならリストとして受け取りたい。

解決策: クエリに型をつければいい

クエリには型がつけられる。配列であれば <要素の型>[] とすればいい。
たとえば前述の school 列の型が varchar(...) なのであれば、クエリをこうすればいい:

select user_id, array_agg(school)::varchar[] as schools
from ...
where ...
group by user_id

これで schools 列の値は Python のリストとして受け取れる。嬉しい。

(以上)

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?