teratail header banner
teratail header banner
質問するログイン新規登録
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

4668閲覧

Pandas to.sql upsertによる一括 SQlite

goki_gottan

総合スコア168

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2022/07/21 04:05

0

0

SQliteで、PandasによるUPSERTを検討しております。

参考サイトより、
https://qiita.com/s2hap/items/b329ce4f9d6c229382ff

df.to_sql(table名, conn, if_exists='upsert_overwrite', index=False)

これが解決とのことで、実装してみましたが、以下エラーが出ます。

raise ValueError(f"'{if_exists}' is not valid for if_exists") ValueError: 'upsert_overwrite' is not valid for if_exists

なにがいけないのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

提示されているページで紹介されているとおりAdding (Insert or update if key exists) option to .to_sqlはまだOpen状態であり正式バージョンには組み込まれていません。
提示ページではソースからpandasビルドしています。
参考:pandas.DataFrame.to_sql

投稿2022/07/21 04:43

can110

総合スコア38352

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

goki_gottan

2022/07/22 05:36

それでは、 変更したいだけでしたら、UPDATEで、INSERTはto.sqlを使用しかないのですね? また、to.sqlは連番の塊でINSERTできますが、UPDATEの場合は、1行1行For文を使用しなければいけないで合ってますか? それとも、UPDATEしたい行も含んだINSERTするto.sqlで一度で作成できますか? 例)ID:1~999までのDateBaseのTableで、 DateFrameに、idが1と、id:1000、1001の行の計3行のあるDateFrameを作成した場合、 id:1は上書きされ、id:1000は追加されますか? この場合のif exists=の後はどのようになるか分かりませんが・・・
can110

2022/07/22 05:40

やりたいことを実現するのに、upsertの代わりにどのようなSQL文を実行すべきかは テーブルや実現内容によるかと思うので、なんとも言えません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問