PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Pandas - write_frame to sqlite - datetime64[ns]

Sie haben in der Tat Recht, dass das Feld datetime64 die Probleme verursacht. Sqlite hat keinen echten Datetime-Typ, aber sie verwenden Text- oder Integer-Typen, um Zeiten darzustellen (siehe http:// www.sqlite.org/datatype3.html und http://www.sqlite.org/lang_datefunc.html ).

Je nachdem, was Sie tun möchten, können Sie also zuerst Ihre datetime-Spalte in einen String konvertieren:

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

oder in ein int (die Anzahl der Sekunden seit dem 01.01.1970 00:00:00 UTC):

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

und schreiben Sie dann Ihre Daten in sqlite.

Anmerkungen:

  • Welche Version von Pandas verwenden Sie? Denn in Version 0.13 (oder darunter) gibt es einen Fehler im if_exists='replace' -Implementierung, die in 0.13.1 (momentan neueste stabile Version) behoben ist
  • Im kommenden Pandas 0.14 wird es eine neue Implementierung der SQL-Funktionen basierend auf sqlalchemy geben, und dort wird die Umwandlung in einen String automatisch erfolgen (also kein Fehler mehr für datetime64-Daten).