【Python3】psycopg2でtimestamp型のデータを登録する場合

psycopg2を利用して、アップデートを実行する際に、更新日時カラム(timestamp型)に現在日時を入れる場合は以下のようにする。

import psycopg2
import datetime

POS_DBNAME = "postgres"
POS_HOST = "localhost"
POS_USER = "postgres"
POS_PASS = "postgres"

# 現在の日付を取得
dt = datetime.datetime.now()

# UPDATE文定義
update_str = f"""
update table_a set
name = 'hoge'
, update_datettime = '{dt}'
where
id = 1
"""

# ポスグレ接続
pos_conn = psycopg2.connect(f"dbname={POS_DBNAME} host={POS_HOST} user={POS_USER} password={POS_PASS}")
pos_cursor = pos_conn.cursor()

# update文実行
pos_cursor.execute(update_str)
result = pos_cursor.statusmessage.split()

# 明示的なコミットと接断
pos_conn.commit()
pos_cursor.close()
pos_conn.close()


アップデートの結果は配列で取得できる。配列0がDML、配列1が件数を表す。printすると以下の通り。
print(result)

  • >['Update', '1']

なので、画面やログに残すには1の方を利用すればよし。
print(f"更新件数は{result[1]}だよ")

  • >更新件数は1件だよ

なお、変数dtを出力すると以下の通り。

print(dt)
datetime.datetime(2022, 6, 1, 17, 10, 13, 447320)