PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pandas - write_frame ke sqlite - datetime64[ns]

Anda memang benar bahwa bidang datetime64 menyebabkan masalah. Sqlite tidak memiliki tipe datetime yang sebenarnya, tetapi mereka menggunakan teks atau tipe integer untuk mewakili waktu (lihat http:// www.sqlite.org/datatype3.html dan http://www.sqlite.org/lang_datefunc.html ).

Jadi tergantung pada apa yang ingin Anda lakukan, pertama-tama Anda dapat mengonversi kolom datetime Anda menjadi string:

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

atau ke int (jumlah detik sejak 1970-01-01 00:00:00 UTC):

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

lalu tulis data Anda ke sqlite.

Catatan sampingan:

  • Versi panda apa yang Anda gunakan? Karena pada versi 0.13 (atau dibawahnya) terdapat bug pada if_exists='replace' implementasi, yang diperbaiki di 0.13.1 (rilis stabil terbaru saat ini)
  • Pada pandas 0.14 mendatang, akan ada implementasi baru dari fungsi sql berdasarkan sqlalchemy, dan di sana konversi ke string akan terjadi secara otomatis (jadi tidak error lagi untuk data 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. Indeks Buat PostgreSQL

  2. Pemicu postgres setelah memasukkan mengakses BARU

  3. Kolom PostgreSQL tidak ada tetapi sebenarnya ada

  4. Hapus keunikan indeks di PostgreSQL

  5. subquery di FROM harus memiliki alias