紙一重の積み重ね

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

PostgreSQL

AWS RDS PostgreSQL 9.6から13.3にアップグレードしたときにハマったことまとめ

はじめに メリークリスマス!この記事は Qiita AWS ADVENT Calendar 2の25日目の記事です。 qiita.com 最近、Postgres 9.6を 13.3 にアップグレードしました。マネジメントコンソールからポチポチするだけで簡単に上がるだろうと思っていましたが、思ってい…

【Postgres10】schema情報をすべて削除する

はじめに Postgresであれこれ作業をしていて、ゼロベースでSchemaを作成する必要があり、不要なテーブル等関連するリソースをまとめて削除したかったのでメモ。 実行方法 DROP SCHEMA hogehoge CASCADE 公式情報 www.postgresql.jp

【Postgres10】前日の最終日付(23:59:59)を取得する方法

はじめに Railsのend_of_dayと同じことをpostgresで実現する必要があったのでメモ。 やりたいこと WHERE句にて、created_atを比較したい 前日の23:59:59までのデータをSELECTしたい 前日の23:59:59を取得するSQL SELECT DATE_TRUNC('day',NOW()) + '-1 secon…

【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…