sql >> Databasteknik >  >> RDS >> PostgreSQL

Pandas - write_frame till sqlite - datetime64[ns]

Du har verkligen rätt i att datetime64-fältet orsakar problemen. Sqlite har ingen riktig datetime-typ, men de använder text eller heltalstyper för att representera tider (se http:// www.sqlite.org/datatype3.html och http://www.sqlite.org/lang_datefunc.html ).

Så beroende på vad du vill göra kan du först konvertera din datetime-kolumn till en sträng:

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

eller till en int (antal sekunder sedan 1970-01-01 00:00:00 UTC):

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

och skriv sedan dina data till sqlite.

Sidenotes:

  • Vilken version av pandor använder du? Eftersom det i version 0.13 (eller senare) finns en bugg i if_exists='replace' implementering, som är fixad i 0.13.1 (senaste stabila versionen för tillfället)
  • I den kommande pandas 0.14 kommer det att finnas en ny implementering av sql-funktionerna baserad på sqlalchemy, och där kommer konverteringen till en sträng att ske automatiskt (så inte fel längre för datetime64-data).



  1. Lite förklaring av denna mysql-kod

  2. Varför denna viloläge mall bulkUpdate inte fungerar

  3. java.net.SocketException:Trasigt rör

  4. PG::SyntaxError för rälsapplikation