紙一重の積み重ね

アラフォーのエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

PostgreSQL

【Rails5 + Postgres10】pgcryptoを使ってuuidを実装する方法

やりたいこと URLにidを使っていると、値を変更して他のユーザの情報が見れたり、データ数の推測ができてしまう。これを避けたい。 https:example.com/user/1/hoge ではなく、 https:example.com/user/76a049b8-d280-49e8-917f-d7b28107c660/hoge というよう…

【PostgreSQL】1つのカラムに入ったカンマ区切りのデータを分割して取得する方法

実行環境 AWS PostgreSQL10.3 やりたいこと 1つのカラムにカンマ区切りでidなどが入っている このカラムを分割してキーにしたい こういうデータを、 列名 値 hoge_id 1,2,3,11 こうしたい。 列名 値 hoge_id 1 hoge_id 2 hoge_id 3 hoge_id 11 実現方法 rege…

【AWS Lambda】PythonからPostgreSQLのストアドプロシージャを実行する方法 #aws

やりたいこと PythonからPostgreSQLのストアドプロシージャを実行したい。 具体的にはAWS Lambdaからストアドを実行したい。 実行環境 AWS Lambda Python3.6 psycopg2 PostgreSQL9.6.6 実現方法 psycopg2のcallprocメソッドを使う。 実装例 import sys impor…

【PostgreSQL10】日付の範囲検索条件まとめ。初日、末日、Nヶ月前の取得方法

やりたいこと BETWEEN検索で、今月初日 00:00:00~末日 23:59:59の検索がしたい BETWEEN検索で、先月初日 00:00:00~先月末日 23:59:59の検索がしたい 取得したい値 実行日は、2018/11/13。 今月初日(時間なし) -- 2018/11/01 SELECT DATE_TRUNC('month',now…

【AWS/RDS】PostgreSQL10のタイムゾーンをUTCからJSTに変更する方法

はじめに PostgreSQLに限らず、AWS RDSのタイムゾーン設定は、defaultではUTCになっています。変更手順をまとめます。 環境 AWS RDS postgreSQL10 注意事項 defaultのパラメータグループは編集できないので注意! パラメータグループの作成手順 パラメータグ…

【Python+Postgres】'int' object does not support indexingが発生したときの対処法。タプルの要素が1つの場合でもカンマが必要。

はじめに Psycopg2のmogrifyにint型の要素を1つ渡して、エスケープしたSQLを取得しようとしたらエラーになったのでメモ。 環境 AWS Lambda Python3.6 PostgreSQL9.6 発生したエラー "errorMessage": "'int' object does not support indexing", "errorType":…

【Python+Psycopg2】PostgreSQLからEXISTSを使ってデータの存在チェックメソッドを作る方法

実行環境 AWS Lambda Python3.6 PostgreSQL9.6.6 psycopg2 やりたいこと existsでデータの有無を確認 結果をBooleanで返却したい 解決方法 fetchone()を使う。公式ドキュメントは以下。 The cursor class — Psycopg 2.7.5 documentation 実装例 def is_exist…

Python3+Psycopg2を使ってsequenceを取得する #Python3 #PostgreSQL9.6

やりたいこと Python3で、PostgreSQLのsequenceを使った処理を書きたい 実行環境 PostgreSQL9.6.6 Python3.6 psycopg2.7.4 検証用シーケンス CREATE SEQUENCE "schema"."table_name_id_seq" INCREMENT 1 START 1 NO MAXVALUE NO MINVALUE NO CYCLE CACHE 1 O…