Encontrar un ejemplo de uso de cx_Oracle, en este ejemplo se muestra toda la información de Cursor.description.

import cx_Oracle
from pprint import pprint

connection = cx_Oracle.Connection("%s/%[email protected]%s" % (dbuser, dbpasswd, oracle_sid))
cursor = cx_Oracle.Cursor(connection)
sql = "SELECT * FROM your_table"
cursor.execute(sql)
data = cursor.fetchall()
print "(name, type_code, display_size, internal_size, precision, scale, null_ok)"
pprint(cursor.description)
pprint(data)
cursor.close()
connection.close()

Lo que yo quería era ver la lista de Cursor.description[0](nombre), así que he cambiado el código:

import cx_Oracle
import pprint

connection = cx_Oracle.Connection("%s/%[email protected]%s" % (dbuser, dbpasswd, oracle_sid))
cursor = cx_Oracle.Cursor(connection)
sql = "SELECT * FROM your_table"
cursor.execute(sql)
data = cursor.fetchall()
col_names = []
for i in range(0, len(cursor.description)):
    col_names.append(cursor.description[i][0])
pp = pprint.PrettyPrinter(width=1024)
pp.pprint(col_names)
pp.pprint(data)
cursor.close()
connection.close()

Creo que habrá mejores formas para imprimir los nombres de las columnas. Por favor, me las alternativas a la de Python principiante. 🙂

Lo siento amigo, lo habéis clavado a ti mismo 😉 Gracias

OriginalEl autor philipjkim | 2010-06-07

3 Comentarios

  1. 2

    La SQLAlchemy código fuente es un buen punto de partida para métodos robustos de la base de datos de la introspección. Aquí es cómo SQLAlchemy refleja en los nombres de tabla de Oracle:

    SELECT table_name FROM all_tables
    WHERE nvl(tablespace_name, 'no tablespace') NOT IN ('SYSTEM', 'SYSAUX')
    AND OWNER = :owner
    AND IOT_NAME IS NULL

    OriginalEl autor Stephen Emslie

  2. 11

    Puede utilizar la lista de comprensión como una alternativa para obtener los nombres de columna:

    col_names = [row[0] for row in cursor.description]

    Desde el cursor.descripción devuelve una lista de 7-elemento de tuplas, se puede obtener el elemento 0, que es el nombre de una columna.

    OriginalEl autor Hemant

  3. 1

    Aquí el código.

    import csv
    import sys
    import cx_Oracle
    
    db = cx_Oracle.connect('user/[email protected]:1521/service_name')
    SQL = "select * from dual"
    print(SQL)
    cursor = db.cursor()
    f = open("C:\dual.csv", "w")
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    r = cursor.execute(SQL)
    
    #this takes the column names
    col_names = [row[0] for row in cursor.description]
    writer.writerow(col_names)
    
    for row in cursor:
       writer.writerow(row)
    f.close()

    OriginalEl autor Oguzhan Gunes

Dejar respuesta

Please enter your comment!
Please enter your name here