DB API 2.0的值不提供这样的能力。各种各样的DB客户端模块提供的这种东西都是非标准的。
的API确实,但是,提供cursor.description
只读与此信息属性:
此只读属性是7项序列的序列。
每个这些序列中包含的信息描述一个结果 柱:
- 名称
- 类型代码
- display_size
- internal_size
- 精度
- 规模
- null_ok
个
前两个项目(名称和类型代码)是强制性的,其他 5是可选的且被设定为无如果没有有意义的值可以是 提供。
<...>
所以,你可以这样做:
for row in result:
result[(i for i,cd in enumerate(result.description) if cd[0]=='column_name').next()]
而罗嗦,只应调用一次,所以这是合理的这个移动到一个子程序:
def columns(cursor):
return {cd[0]:i for i,cd in enumerate(cursor.description)}
<...>
result=c.execute(...)
ccls=columns(result)
for row in result:
row[ccls['name']]
No.当使用SELECT语句时,API返回一个python“list”,而不是像'FirstName'那样需要支持关键字索引的'dict' – JacobIRR
注意'cursor.execute'返回值在API规范中没有指定(但是[是指定为游标本身](http://cx-oracle.readthedocs.io/en/latest/cursor.html#Cursor.execute)在'cx_Oracle'文档中)。 –