sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur översätter jag PostgreSQL OID med python

Du kan konvertera "OID" till text genom att helt enkelt casta - förutsatt OID (Object Identifier) är faktiskt en regtyp (OID-undertypen för registrerade typer) som du skulle få från funktionen pg_typeof() .

Postgres kommer normalt att visa värden av datatypen regtype som text till användaren. Exempel:

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

Medan det internt är en OID:

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

Om din klient inte gör detsamma kan du tvinga fram den med en explicit roll:

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

Hämta typer av alla kolumner från systemkatalogen

Det är oklart hur du faktiskt hämtar typerna. Överväg den här frågan för att få fullständig information:

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

Observera att format_typ(..) visar typen inklusive modifierare.




  1. Sätt i med LEFT JOIN och INNER JOIN

  2. Hur man sammanfogar värden från MySQL SELECT

  3. SubSonic genererar inte MySql främmande nyckeltabeller

  4. MySQL slutar använda index när ytterligare begränsningar läggs till