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)