PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Pandas - write_frame to sqlite - datetime64 [ns]

Bạn thực sự chính xác rằng trường datetime64 đang gây ra sự cố. Sqlite không có kiểu ngày giờ thực, nhưng chúng sử dụng kiểu văn bản hoặc số nguyên để biểu thị thời gian (xem http:// www.sqlite.org/datatype3.html http://www.sqlite.org/lang_datefunc.html ).

Vì vậy, tùy thuộc vào những gì bạn muốn làm, trước tiên, bạn có thể chuyển đổi cột ngày giờ thành một chuỗi:

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

hoặc đến một int (số giây kể từ 1970-01-01 00:00:00 UTC):

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

và sau đó ghi dữ liệu của bạn vào sqlite.

Chú thích bên lề:

  • Bạn đang sử dụng phiên bản gấu trúc nào? Vì trong phiên bản 0.13 (hoặc thấp hơn) có một lỗi trong if_exists='replace' triển khai, được khắc phục trong 0.13.1 (bản phát hành ổn định mới nhất tại thời điểm hiện tại)
  • Trong pandas 0.14 sắp tới, sẽ có một triển khai mới của các hàm sql dựa trên sqlalchemy và ở đó, quá trình chuyển đổi thành một chuỗi sẽ tự động xảy ra (vì vậy, dữ liệu datetime64 sẽ không xảy ra lỗi nữa).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails + Postgres:Không trả lại thông tin múi giờ trên cột từ bảng đã tham gia

  2. Lỗi cơ sở dữ liệu Postgres Tiêu đề trang không hợp lệ

  3. Kết nối với cơ sở dữ liệu PostgreSql từ xa bằng Powershell

  4. PostgreSQL json_array_elements trong mệnh đề FROM - tại sao đây không phải là tham gia cartesian?

  5. K-Nearest Neighbor Query trong PostGIS