sql >> Database teknologi >  >> RDS >> PostgreSQL

Pandas - write_frame til sqlite - datetime64[ns]

Du har faktisk ret i, at datetime64-feltet forårsager problemerne. Sqlite har ingen reel datetime-type, men de bruger tekst- eller heltalstyper til at repræsentere tider (se http:// www.sqlite.org/datatype3.html og http://www.sqlite.org/lang_datefunc.html ).

Så afhængigt af hvad du vil gøre, kan du først konvertere din datetime-kolonne til en streng:

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

eller til en int (antal sekunder siden 1970-01-01 00:00:00 UTC):

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

og skriv derefter dine data til sqlite.

Sidenotes:

  • Hvilken version af pandaer bruger du? Fordi i version 0.13 (eller derunder) er der en fejl i if_exists='replace' implementering, som er rettet i 0.13.1 (seneste stabile udgivelse i øjeblikket)
  • I den kommende pandas 0.14 vil der være en ny implementering af sql-funktionerne baseret på sqlalchemy, og der vil konverteringen til en streng ske automatisk (så der ikke længere fejles for datetime64-data).



  1. Bedste måde at gemme enorme logdata

  2. Docker - Hvordan kan man køre kommandoen psql i postgres containeren?

  3. Forhindre HTML-data i at blive indsendt i formulartekstbokse

  4. Oracle til SQL2005 DATETIME-feltet løber over i SSIS