Opened 7 months ago

Last modified 7 months ago

#35240 closed Bug

Django doesn't set Postgres timezone to UTC when using psycopg3 — at Version 1

Reported by: Fabi Owned by: nobody
Component: Uncategorized Version: 4.2
Severity: Normal Keywords:
Cc: Fabi, Mariusz Felisiak, Florian Apolloner, Simon Charette Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Fabi)

Configuration uses USE_TZ=True and database defaults to America/New_York. I would expect the connection then being set to UTC, but it is not changed:

In [4]: connections["default"].cursor().connection.info.timezone
Out[4]: zoneinfo.ZoneInfo(key='America/New_York')

The wrapper and the psycopg3 timezone adapter both think its UTC though:

In [5]: connections["default"].timezone
Out[5]: datetime.timezone.utc

In [6]: connections["default"].cursor().connection.adapters.get_loader(TIMESTAMPTZ_OID, Format.TEXT).timezone
Out[6]: datetime.timezone.utc

Looking at the code I think the problem is that the adapter gets initialized with self.timezone which then gets compared with self.timezone later again, resulting in a no-op:

Change History (1)

comment:1 by Fabi, 7 months ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top