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).