PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie übersetze ich PostgreSQL OID mit Python

Sie können die "OID" in text umwandeln durch einfaches Casting - vorausgesetzt der OID (Object Identifier) ist eigentlich ein regtype (der OID-Untertyp für registrierte Typen), wie Sie ihn von der Funktion pg_typeof() .

Postgres zeigt normalerweise Werte des Datentyps regtype an als text an den Benutzer. Beispiel:

SELECT pg_typeof('2013-1-1'::date);
 pg_typeof
-----------
 date

Während es intern eine OID ist:

SELECT pg_typeof('2013-1-1'::date)::oid;
 pg_typeof
-----------
      1082

Wenn Ihr Client das nicht tut, können Sie es mit einem expliziten Cast erzwingen:

SELECT pg_typeof('2013-1-1'::date)::text;
SELECT 1082::regtype::text;

Typen aller Spalten aus dem Systemkatalog abrufen

Es ist unklar wie Sie rufen die Typen tatsächlich ab. Betrachten Sie diese Abfrage, um vollständige Informationen zu erhalten:

SELECT attname
     , atttypid::regtype AS base_type
     , format_type(atttypid, atttypmod) AS full_type
FROM   pg_catalog.pg_attribute
WHERE  attrelid = 'public.tbl'::regclass  -- your table name here
AND    attnum > 0
AND    NOT attisdropped
ORDER  BY attnum;

  attname   |          base_type          |         full_type
------------+-----------------------------+-----------------------------
 age_id     | integer                     | integer
 age        | text                        | text
 ageabk     | character                   | character(2)
 foo        | boolean                     | boolean
 log_up     | timestamp without time zone | timestamp without time zone

Beachten Sie, dass format_type(..) zeigt den Typ einschließlich Modifikatoren an.