在我的django应用程序(Django 1.6.0,在Red Hat上运行的python 2.7.5)中,我的数据库驱动程序看到来自ctypes的错误:
TypeError:不兼容的类型,LP_c_int实例而不是LP_c_int实例
代码如下所示:
is_null = value is None
param.value.is_null = pointer(c_int(is_null)) <-- error occurs on this line
我对ctypes并不熟悉(我继承了这段代码)但从表面上看,这条错误信息毫无意义。代码已运行多年,但我现在看到这个错误到处都是。我做了一件明显不对的事吗?
感谢IljaEveilä的评论,这是一个最小的复制品:
from ctypes import *
from ctypes import _reset_cache
class DataValue(Structure):
"""Must match a_sqlany_data_value."""
_fields_ = [("buffer", POINTER(c_char)),
("buffer_size", c_size_t),
("length", POINTER(c_size_t)),
("type", c_int),
("is_null", POINTER(c_int))]
d = DataValue()
_reset_cache()
is_null = False
d.is_null = pointer( c_int( is_null ) )