Python
やりたいこと 業務で書いたLambdaのコード量が900行を超えてカオスになったので、リファクタリングしたい。 コードの用途ごとにソースを分割したい。 発生したエラー Unable to import module 'lambda_function': No module named 'util' 原因 zipで圧縮した…
やりたいこと PythonからPostgreSQLのストアドプロシージャを実行したい。 具体的にはAWS Lambdaからストアドを実行したい。 実行環境 AWS Lambda Python3.6 psycopg2 PostgreSQL9.6.6 実現方法 psycopg2のcallprocメソッドを使う。 実装例 import sys impor…
はじめに Psycopg2のmogrifyにint型の要素を1つ渡して、エスケープしたSQLを取得しようとしたらエラーになったのでメモ。 環境 AWS Lambda Python3.6 PostgreSQL9.6 発生したエラー "errorMessage": "'int' object does not support indexing", "errorType":…
実行環境 AWS Lambda Python3.6 PostgreSQL9.6.6 psycopg2 やりたいこと existsでデータの有無を確認 結果をBooleanで返却したい 解決方法 fetchone()を使う。公式ドキュメントは以下。 The cursor class — Psycopg 2.7.5 documentation 実装例 def is_exist…
やりたいこと 複数のインデックス番号を指定して、リストから対象のデータを一度に削除したい 結論 lambda式を使う 困った例 以下だと、削除したいインデックスがずれてしまう。 list = ["りんご","みかん","バナナ","メロン","スイカ"] # りんごとメロンを…
困っていること StepFunctionsを使ってLambdaを組み立てる場合、JSONデータのサイズ上限に引っかかってしまう。 { "error": "States.DataLimitExceeded", "cause": "The state/task 'arn:aws:lambda:ap-northeast-1:892368313445:function:hoge' returned a …
やりたいこと 1つのメソッドで複数の戻り値を返したい 解決策 returnする値をカンマで区切る 文字列と数字を返す例 def hoge(): # 略 return "hoge",123456789 文字列と数字が含まれたリストを返す例 def hoge(): # 略 return ["hoge",123456789] 複数のリス…
やりたいこと Scrapyで実装した処理の任意の場所にログを追加したい。 環境 Scrapy1.5.0 Python3.6 実現方法 import loggingと、logging.log_level()を使用する。 以下、infoレベルのログ出力の実装例。 import logging # 略 logging.info("hogehoge") 参考…
はじめに 最近、Pythonを使ってコードを書きます。まだまだ不慣れなので、flake8を導入してみました。 Rubocopみたいで便利ですね。後学のために指摘された内容をまとめます。 【参考情報】flake8公式 lintlyci.github.io E111 indentation is not a multipl…
やりたいこと Python3を使って、DynamoDBのqueryを使って取得したJSONデータをPostgreSQLにINSERTしたい 実行環境 AWS DynamoDB AWS Lambda Python3.6 psycopg2.7.4 AWS RDS(PostgreSQL9.6.6) 発生したエラー jsonを使ってダンプした結果、INSERT時にエラ…
やりたいこと pip installしたライブラリ群をそのままGitにpushしたため、requirements.txtにライブラリ群を集約したい そのため、pip installしたライブラリ群のバージョンを確認したい 【結論】ライブラリのバージョンを確認する pip freezeまたは、pip li…
やりたいこと 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…
やりたいこと Pythonを使って、JSONデータをPostgreSQLにINSERTしたい 実行環境 PostgreSQL9.6.6 Python3.6 psycopg2.7.4 発生したエラー psycopg2.ProgrammingError: can't adapt type 'dict' 解決法 JSONデータが格納されている変数に対して、json.dumps()…
はじめに 業務で本格的にPython3を使ってLambda関数を書くようになりました。 SQLに改行を入れて複数行で書く方法 Rubyの感覚でSQLに改行を入れて書いたところエラーとなってしまったので反省。 長いSQLを複数行で書くときは、ヒアドキュメントを使う。(こ…