def get_table_columns(conn,obj): """ Obtiene las columnas de una tabla """ cur = conn.cursor() cur.execute(""" SELECT a.attname, pg_catalog.format_type(a.atttypid, a.atttypmod), (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128) FROM pg_catalog.pg_attrdef d WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef) as format_extra, a.attnotnull, a.attnum FROM pg_catalog.pg_attribute a WHERE a.attrelid = %s AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum """, [obj.oid]) for name, format_type, format_extra, notnull, number in cur: field = Struct() field.name = name field.format_type = format_type field.format_extra = format_extra field.default = None # <- probablemente esta en format_extra... field.notnull = notnull field.nullable = not field.notnull field.sql_nullable = "NOT NULL" if notnull else "" field.number = number yield field