Example #1
0
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