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


Reply via email to