然而,我正试图将几个pandas数据帧(格式相同)写入postgres数据库
其中一些
随机不写入数据库。在这种情况下,to_sql会自动失败并返回-1(表示失败)。
我不使用任何应该排除的模式
this issue
作为可能的原因,
and I am not using SQL Server either
让我印象深刻的是,其中一些数据帧被写入数据库,而另一些则没有。
代码:
from sqlalchemy import create_engine, inspect, DateTime
import psycopg
engine = create_engine('postgresql+psycopg://plantwatch:[email protected]/plantwatch')
df.to_sql('power', con=engine2, if_exists='append', index=False, dtype={'produced_at': DateTime})
示例df(对于每个数据帧,一个id被写入db)和预期的db内容:
produced_at id value
2015-01-01 00:00:00 someid 1
2015-01-01 01:00:00 someid 2
2015-01-01 00:00:00 someid2 1
2015-01-01 01:00:00 someid2 2
实际数据库内容:
produced_at id value
2015-01-01 00:00:00 someid 1
2015-01-01 01:00:00 someid 2
一个奇怪的解决方法是将所有数据帧转储到.csv文件中,并将每个数据帧逐一导入到postgres中,但必须有另一种方法。