sql >> Database >  >> RDS >> PostgreSQL

Panda's - write_frame naar sqlite - datetime64[ns]

Je hebt inderdaad gelijk dat het datetime64-veld de problemen veroorzaakt. Sqlite heeft geen echt datetime-type, maar ze gebruiken tekst of integer-types om tijden weer te geven (zie http:// www.sqlite.org/datatype3.html en http://www.sqlite.org/lang_datefunc.html ).

Dus afhankelijk van wat je wilt doen, kun je eerst je datetime-kolom converteren naar een string:

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

of naar een int (het aantal seconden sinds 1970-01-01 00:00:00 UTC):

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

en schrijf vervolgens uw gegevens naar sqlite.

Kanttekeningen:

  • Welke versie van panda's gebruik je? Omdat er in versie 0.13 (of lager) een bug zit in de if_exists='replace' implementatie, die is opgelost in 0.13.1 (laatste stabiele release op dit moment)
  • In de komende panda's 0.14 zal er een nieuwe implementatie zijn van de sql-functies op basis van sqlalchemy, en daar zal de conversie naar een string automatisch plaatsvinden (dus geen fout meer voor datetime64-gegevens).



  1. Inner Join gebruiken om het interval tussen specifieke records en gerelateerde gebeurtenissen in een tabel te bepalen

  2. Hoe krijg ik min, mediaan en max van mijn query in postgresql?

  3. Kan een opgeslagen procedure werken met twee verschillende databases? Wat dacht je van twee servers?

  4. Hoe rij/kolom met mysql-gegevens in array op te slaan?