【问题标题】:Python: Determining Oracle Database Column Data Types in SQL Select ListPython:确定 SQL 选择列表中的 Oracle 数据库列数据类型
【发布时间】:2019-07-31 18:20:34
【问题描述】:

如何使用 Oracle 和 Python 中的 cx_Oracle 模块确定选择列表中列的列数据类型。本质上是一种游标自省。

我看到了需要根据表名查询 Oracle 数据字典的解决方案。但是,如果您需要编写动态执行 SQL 的代码,比如存储在文件中的 SQL,它连接两个或多个表,事情就会变得棘手。此方法允许您查询游标和选择列表中的任何给定列,无论它是从哪个表或视图派生的,从而确定列的数据类型。

【问题讨论】:

标签: python-3.x sqldatatypes cx-oracle


【解决方案1】:

所以这是解决方案。假设我定义了光标 cur 并按如下方式执行我的 SQL:

    cur = con.cursor()
    cur.execute('SELECT colX, colY, colZ,... FROM my_table')

我们现在可以查询游标对象,如果我们想说,作为列表返回的列的名称,我们可以这样做:

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

所以在这里,col_names[1] 将在我们的示例 SQL 中显示为“colY”。

以类似的方式,我们可以获取数据类型列表:

    col_types = [row[1] for row in cur.description]

所以现在我们可以通过执行以下操作来测试数据类型:

    if (col_types[i].__name__ == 'DATETIME'):
        ...

或者如果我们只是想报告我们可以使用的数据类型:

    print (col_types[i].__name__)

注意:观察到的数据类型近似于 Oracle 数据类型。例如,Oracle DATE 列将被描述为 DATETIME,而 VARCHAR2 将显示为 STRING。要查看完整的映射,请参阅:

https://www.oracle.com/technetwork/articles/dsl/prez-python-queries-101587.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2016-02-05
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多