PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Pandas - write_frame към sqlite - datetime64[ns]

Наистина сте прави, че полето datetime64 причинява проблемите. Sqlite няма истински тип дата и час, но те използват текстови или цели числа за представяне на времена (вижте http:// www.sqlite.org/datatype3.html и http://www.sqlite.org/lang_datefunc.html ).

Така че в зависимост от това какво искате да направите, можете първо да конвертирате вашата колона за дата и час в низ:

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

или към int (броят секунди от 1970-01-01 00:00:00 UTC):

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

и след това запишете вашите данни в sqlite.

Странични бележки:

  • Коя версия на pandas използвате? Тъй като във версия 0.13 (или по-ниска) има грешка в if_exists='replace' изпълнение, което е коригирано в 0.13.1 (най-новата стабилна версия в момента)
  • В предстоящата pandas 0.14 ще има ново внедряване на sql функциите, базирани на sqlalchemy, и там преобразуването в низ ще се извърши автоматично (така че вече няма грешка за данни 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. Създаване и изтриване на PostgreSQL база данни в Ubuntu 16.04

  2. SQLAlchemy набор членство за много големи набори

  3. CSV копие в Postgres с масив от потребителски тип с помощта на JDBC

  4. Събиране на големи статистически набори с pg_stat_statements?

  5. postgresql - sql - брой "истински" стойности