Vous avez en effet raison de dire que le champ datetime64 est à l'origine des problèmes. Sqlite n'a pas de type datetime réel, mais ils utilisent des types texte ou entier pour représenter les heures (voir http:// www.sqlite.org/datatype3.html et http://www.sqlite.org/lang_datefunc.html ).
Donc, en fonction de ce que vous voulez faire, vous pouvez d'abord convertir votre colonne datetime en chaîne :
df['field2'] = df['field2'].apply(str)
ou à un entier (le nombre de secondes depuis le 1970-01-01 00:00:00 UTC):
df['field2'] = df['field2'].astype('int64')
puis écrivez vos données dans sqlite.
Notes annexes :
- Quelle version de pandas utilisez-vous ? Parce que dans la version 0.13 (ou inférieure) il y a un bogue dans le
if_exists='replace'
implémentation, qui est corrigée dans la version 0.13.1 (dernière version stable pour le moment) - Dans la prochaine pandas 0.14, il y aura une nouvelle implémentation des fonctions sql basées sur sqlalchemy, et là la conversion en chaîne se fera automatiquement (donc plus d'erreur pour les données datetime64).