De code die ik eerder probeerde, mislukt omdat het ervan uitgaat dat np.Nan zijn eigen type is terwijl het eigenlijk een float is. De volgende code, met dank aan Daniel de psycopg2 mailinglijst , doet het werk correct.
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)