代码之家  ›  专栏  ›  技术社区  ›  dietzi96

Pandas DataFrame.to_sql随机和静默地失败,没有错误消息

  •  1
  • dietzi96  · 技术社区  · 5 月前

    然而,我正试图将几个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中,但必须有另一种方法。

    0 回复  |  直到 5 月前