У меня есть простой скрипт, который передает метку времени в базу данных Postgres.Я просматриваю БД с помощью Postico.
Я пытаюсь передать значение UTC, что означает, что я хочу, чтобы БД сохраняла все значения в часовом поясе +00.Я использую запись timestamptz
в БД.
В строке, предшествующей записи в БД, я печатаю записываемое значение.Консоль Python возвращает:
2018-11-21 10:03:06+00:00
, но когда я просматриваю его в Postico, я получаю:
2018-11-21 11:03:06+01
.
Почему Positco возвращаетсячто-то отличное от того, что пишется?Код выглядит следующим образом:
import time
import psycopg2
import datetime
def write_to_db(entry):
conn = psycopg2.connect("dbname=testing user=tester")
cur = conn.cursor()
print(entry)
cur.execute("INSERT INTO test (ts) VALUES (%s)", (entry, ))
conn.commit()
cur.close()
conn.close()
def main():
dt = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc).replace(microsecond = 0)
write_to_db(dt)
if __name__ == '__main__':
main()
Редактировать
Чтение из базы данных возвращает следующее:
(datetime.datetime(2018, 11, 21, 11, 3, 6, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=60, name=None)),)
Так что, возможно, этопроблема с psycopg2
записью в базу данных?