Кодът, който опитвах преди това, се проваля, защото предполага, че np.Nan е свой собствен тип, когато всъщност е float. Следният код, с любезното съдействие на Daniele Varrazzo на пощенския списък на psycopg2 , върши работата правилно.
def nan_to_null(f,
_NULL=psycopg2.extensions.AsIs('NULL'),
_Float=psycopg2.extensions.Float):
if not np.isnan(f):
return _Float(f)
return _NULL
psycopg2.extensions.register_adapter(float, nan_to_null)