sql >> Databáze >  >> RDS >> PostgreSQL

Pandy - write_frame to sqlite - datetime64[ns]

Máte skutečně pravdu, že pole datetime64 způsobuje potíže. Sqlite nemá žádný skutečný typ data a času, ale k vyjádření časů používá textové nebo celočíselné typy (viz http:// www.sqlite.org/datatype3.html a http://www.sqlite.org/lang_datefunc.html ).

Takže v závislosti na tom, co chcete udělat, můžete nejprve převést sloupec datetime na řetězec:

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

nebo na int (počet sekund od 1970-01-01 00:00:00 UTC):

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

a poté zapište svá data do sqlite.

Vedlejší poznámky:

  • Jakou verzi pand používáte? Protože ve verzi 0.13 (nebo nižší) je chyba v if_exists='replace' implementace, která je opravena v 0.13.1 (aktuálně nejnovější stabilní vydání)
  • V nadcházejících pandách 0.14 bude nová implementace funkcí SQL založených na sqlalchemy a převod na řetězec bude probíhat automaticky (takže již nedochází k chybě pro data datetime64).



  1. Funkce data a času SQLite

  2. Nelze se připojit k místnímu serveru MySQL přes soket '/tmp/mysql.sock

  3. Kam ukládat přihlašovací údaje MySQL ve skriptech PHP?

  4. Změna písma v MySQL Workbench