18

cx_Oracle を使用した例が見つかりました。この例は のすべての情報を示していますCursor.description

import cx_Oracle
from pprint import pprint

connection = cx_Oracle.Connection("%s/%s@%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()

私が見たかったのはCursor.description[0](名前)のリストだったので、コードを変更しました:

import cx_Oracle
import pprint

connection = cx_Oracle.Connection("%s/%s@%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()

列の名前を出力するより良い方法があると思います。Python 初心者の代替手段を教えてください。:-)

4

3 に答える 3

4

SQLAlchemyソースコードは、データベースイントロスペクションの堅牢なメソッドの開始点として適しています。SQLAlchemyが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
于 2011-05-25T17:12:49.707 に答える