Der Code, den ich zuvor ausprobiert habe, schlägt fehl, weil er davon ausgeht, dass np.Nan ein eigener Typ ist, obwohl es sich tatsächlich um einen Float handelt. Der folgende Code, mit freundlicher Genehmigung von Daniele Varrazzo on die psycopg2-Mailingliste , macht den Job richtig.
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)