public inbox for [email protected]
help / color / mirror / Atom feedFrom: Paolo De Stefani <[email protected]>
To: Psycopg <[email protected]>
Subject: From spycopg2 to psycopg3 data adaptation
Date: Tue, 05 Oct 2021 13:29:52 +0200
Message-ID: <[email protected]> (raw)
Hi
Still working on migration to psycopg3 of my (not so) small
application...
I use PyQt\PySide for user interface and i convert some postgresql data
types to Qt types.
For example to convert timestamptz to QDateTime in psycopg2 i use:
def cast_timestamp_qdatetime(value, cur):
if value is None:
return None
dt = QDateTime.fromString(value[:23], "yyyy-MM-dd HH:mm:ss.zzz")
if not dt.isValid(): # no milliseconds
dt = QDateTime.fromString(value[:19], "yyyy-MM-dd HH:mm:ss")
return dt
QDATETIME = psycopg2.extensions.new_type((1184,), "QDATETIME",
cast_timestamp_qdatetime)
psycopg2.extensions.register_type(QDATETIME)
I tryed this to achieve the same result in psycopg3:
class TimestamptzQDateTimeLoader(Loader):
def load(self, value):
if value is None:
return None
print(value)
dt = QDateTime.fromString(value[:23], "yyyy-MM-dd HH:mm:ss.zzz")
if not dt.isValid(): # no milliseconds
dt = QDateTime.fromString(value[:19], "yyyy-MM-dd HH:mm:ss")
return dt
psycopg.adapters.register_loader('timestamptz',
TimestamptzQDateTimeLoader)
BUT it's not working because the "value" is binary not string:
<memory at 0x000000000939BA00>
So how i can get the same result of psycopg2 in psycopg3 ?
--
Paolo De Stefani
view thread (2+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected]
Subject: Re: From spycopg2 to psycopg3 data adaptation
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox