Cli*_*ock -1 cx-oracle sqldatatypes python-3.x
如何使用 Oracle 和 Python 中的 cx_Oracle 模块确定选择列表中列的列数据类型。本质上是一种光标内省。
我见过需要根据表名查询 Oracle 数据字典的解决方案。但是,如果您需要编写动态执行 SQL 的代码,例如存储在文件中的 SQL,它连接两个或多个表,事情就会变得棘手。此方法允许您询问游标以及选择列表中的任何给定列,无论它源自哪个表或视图,从而确定该列的数据类型。
所以这就是解决方案。假设我定义了游标 cur 并按如下方式执行 SQL:
cur = con.cursor()
cur.execute('SELECT colX, colY, colZ,... FROM my_table')
Run Code Online (Sandbox Code Playgroud)
我们现在可以询问游标对象,如果我们想要以列表形式返回列的名称,我们可以这样做:
col_names = [row[0] for row in cur.description]
Run Code Online (Sandbox Code Playgroud)
因此,在这里,col_names[1] 在我们的示例 SQL 中将显示为“colY”。
以类似的方式,我们可以获取数据类型列表:
col_types = [row[1] for row in cur.description]
Run Code Online (Sandbox Code Playgroud)
现在我们可以通过执行以下操作来测试数据类型:
if (col_types[i].__name__ == 'DATETIME'):
...
Run Code Online (Sandbox Code Playgroud)
或者如果我们只是想报告数据类型,我们可以使用:
print (col_types[i].__name__)
Run Code Online (Sandbox Code Playgroud)
注意:观察到的数据类型与 Oracle 数据类型近似。例如,Oracle DATE 列将被描述为 DATETIME,VARCHAR2 将显示为 STRING。要查看完整的映射,请参阅:
https://www.oracle.com/technetwork/articles/dsl/prez-python-queries-101587.html