Python类型相等

时间:2013-06-21 12:19:20

标签: python types

我正在从Oracle数据库中读取数据,并希望检查该字段是否为cx_Oracle.DATETIME类型的列。

我尝试了以下内容:

if columnTypes[columnIndex] == cx_Oracle.DATETIME:

if columnTypes[columnIndex] is cx_Oracle.DATETIME:

都没有工作。

如果我这样做:

print columnTypes[columnIndex]

它返回:

<type 'cx_Oracle.DATETIME'>

修改

通过将类型存储在变量中来实现:

dbDateType = cx_Oracle.DATETIME

if columnTypes[columnIndex] == dbDateType

2 个答案:

答案 0 :(得分:2)

最好的方法可能是:

isinstance(columnTypes[columnIndex], cx_Oracle.DATETIME)

如果您想检查确切类型,type(obj) == myType woudl工作,但使用isinstance允许进行子类型输入。

答案 1 :(得分:2)

columnTypes是否存储类型本身或类型的表示形式,例如字符串或type实例?

尝试获取columnTypes[columnIndex]type(columnTypes[columnIndex])的输出。希望有人会给你<type 'cx_Oracle.DATETIME'>,然后你可以将其与type(cx_Oracle.DATETIME)进行比较。

如果您获得超级/子类,则必须以类似的方式使用isinstance - this question可能会引起您的兴趣。