PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Pandy - write_frame do sqlite - datetime64[ns]

Rzeczywiście masz rację, że pole datetime64 powoduje problemy. Sqlite nie ma prawdziwego typu datetime, ale używa typów tekstowych lub liczb całkowitych do reprezentowania czasu (patrz http:// www.sqlite.org/datatype3.html i http://www.sqlite.org/lang_datefunc.html ).

W zależności od tego, co chcesz zrobić, możesz najpierw przekonwertować kolumnę daty i godziny na ciąg:

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

lub do int (liczba sekund od 1970-01-01 00:00:00 UTC):

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

a następnie zapisz swoje dane w sqlite.

Przypisy:

  • Jakiej wersji pandy używasz? Ponieważ w wersji 0.13 (lub niższej) jest błąd w if_exists='replace' implementacja, która została naprawiona w 0.13.1 (najnowsza stabilna wersja w tej chwili)
  • W nadchodzących pandach 0.14 pojawi się nowa implementacja funkcji sql oparta na sqlalchemy, a tam konwersja na ciąg znaków nastąpi automatycznie (więc nie będzie już błędu dla danych datetime64).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Na jakim poziomie nazwy indeksów Postgres muszą być unikalne?

  2. Jak zmienić identyfikator tabeli z szeregowego na tożsamość?

  3. Najlepsze narzędzia alertów i powiadomień dla PostgreSQL

  4. Django jak ponownie połączyć się po DatabaseError:limit czasu zapytania

  5. Błąd w mechanizmie blokowania PostgreSQL lub niezrozumienie mechanizmu