Pandas newbie。Pandasを使ってMySQL-DBに部分テーブルをロードして保存する方法
SQLテーブルは3列(IDが主キーである)で構成されている:
query = "SELECT * FROM `TABLE_NAME` WHERE (`VALUE2` IS NULL)"
engine = create_engine("mysql://user:[email protected]/db"
df = pd.read_sql(query, con=engine)
engine.dispose()
:私はVALUE2は(なし)あるすべての行を読み込むパンダと
> ID VALUE1 VALUE2
> 1 11 28
> 2 21 (None)
> 3 31 56
> 4 41 (None)
今まではすべてが大丈夫でした。
ロード後、失われたVALUE2はいくつかのルールに従って計算されます。
PROBLEM
私は
df.to_sql(TABLE_NAME, con=engine, if_exists="replace", index=False)
でデータベースを更新した場合のデータフレームにロードされていなかったすべての元の線が失われています。
> ID VALUE1 VALUE2
> 2 21 103
> 4 41 72
があります元の行をそのまま残して更新する方法はありますか?
私はこれを取得する:
> ID VALUE1 VALUE2
> 1 11 28
> 2 21 103
> 3 31 56
> 4 41 72
それは書き換えの代わりに、更新された全テーブルのように見える...
はテーブル全体をロードすることが非常に非効率的になるだけで更新します少数の行。それは事実上問題を解決するだろうが、それは受け入れられない。
「なぜ」についてのご意見はありますか?
何かのために二重ステップを通過する必要があるので、「シンプル」なのは少し奇妙です。パンダは仕事だけでとても近いです... ありがとう! –
助けてくれてうれしい – e4c5