sql >> Base de Datos >  >> RDS >> PostgreSQL

Pandas - write_frame a sqlite - datetime64[ns]

De hecho, tiene razón en que el campo datetime64 está causando los problemas. Sqlite no tiene un tipo de fecha y hora real, pero usa tipos de texto o enteros para representar tiempos (ver http:// www.sqlite.org/datatype3.html y http://www.sqlite.org/lang_datefunc.html ).

Entonces, dependiendo de lo que quiera hacer, primero puede convertir su columna de fecha y hora en una cadena:

df['field2'] = df['field2'].apply(str)

o a un int (la cantidad de segundos desde 1970-01-01 00:00:00 UTC):

df['field2'] = df['field2'].astype('int64')

y luego escriba sus datos en sqlite.

Notas al margen:

  • ¿Qué versión de pandas estás usando? Porque en la versión 0.13 (o anterior) hay un error en el if_exists='replace' implementación, que se corrigió en 0.13.1 (última versión estable en este momento)
  • En los próximos pandas 0.14, habrá una nueva implementación de las funciones sql basadas en sqlalchemy, y allí la conversión a una cadena ocurrirá automáticamente (por lo que ya no habrá errores para los datos datetime64).