【问题标题】:How do I display attributes of table in oracle using python?如何使用python在oracle中显示表的属性?
【发布时间】:2017-11-22 09:17:18
【问题描述】:

我将 Python 连接到 Oracle。

我正在尝试使用 python 显示表格的属性,即 我想显示表模式。我正在使用 'describe' 语句,但在执行时给我一个错误' Invalid SQL Statement'.

我做了以下事情:

queryString = 'Describe Customer'
onCursor.execute(queryString)

“客户”是表名

【问题讨论】:

  • 您可能已将 Python 连接到 Oracle。请描述你是如何做到的:)
  • 另外,请问您需要先USE database吗?
  • 我这样做了,但它不起作用:(

标签: python sql oracle cx-oracle


【解决方案1】:

如果您需要 SQL 语句列描述,则只需使用 cursor.description。如果您需要确切的表模式,请从 ALL_TAB_COLUMNS oracle 视图中选择:

    cnn = cx_Oracle.connect(cnn_str)
    cursor = cnn.cursor()
    cursor.execute("SELECT * FROM dual")
    print(cursor.description)

    cursor.execute("select * from ALL_TAB_COLUMNS where table_name = 'DUAL'")
    print(cursor.fetchall())

    cursor.close()

它将证明输出:

[('DUMMY', <class 'cx_Oracle.STRING'>, 1, 4, None, None, 1)]
[('SYS', 'DUAL', 'DUMMY', 'VARCHAR2', None, None, 1, None, None, 'Y', 1, None, None, 1, b'X', b'X', 1, 0, 1, datetime.datetime(2009, 4, 25, 23, 49, 59), 1, 'CHAR_CS', 1, 'YES', 'NO', 2, 1, 'B', 'NO', 'YES', 'NONE', 'NO', 'NO', None, None, None)]

【讨论】:

    【解决方案2】:

    在下面的 sql 中,您替换表和所有者名称。它给出了列名和列的数据类型。

    SELECT COLUMN_NAME, DATA_TYPE FROM ALL_TAB_COLUMNS WHERE TABLE_NAME='table_name' and OWNER='schema name'

    【讨论】:

      【解决方案3】:

      现在this 是一个有点旧的来源,但我认为你的问题是describe 并不是一个真正的查询。

      尝试从数据字典中获取信息。 Oracle 12.2 的文档是here

      【讨论】:

      • 旧来源的解决方案有效。感谢您的帮助
      猜你喜欢
      • 2018-01-17
      • 2018-12-29
      • 2019-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多