🐼

sqlからpandasを逆引き(INSERT編)

2021/01/11に公開

こんにちは。ヤギユキ(@yagiyuki06)です。

SQLのクエリから、Pandas のメソッドを逆引きする情報を作成しました。
SQLは知っているけど、Pandasはあまり知らないエンジニアのための情報です。

今回は、SQLのINSERT文をターゲットとします。

前回は、SELECT編の記事を書いたので、よろしければこちらもどうぞ。
https://zenn.dev/yagiyuki/articles/sql2pandas-select

単一レコード追加

レコード追加は、appendメソッドを使います。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html

単一のレコードを追加する例です。

SQL

-- カラムCOL1にA1、COL2にB1を追加
INSERT into tbl (COL1, COL2) values ('A1', 'B1');

python

s = pd.Series(['A1', 'B2'], index=['COL1', 'COL2']) # 複数レコードと同様にDataFrameでも可
df.append(s, ignore_index=True)

複数レコード追加

複数レコードを追加する例です。

SQL

-- カラムCOL1,COL2に3つのレコード ('A1', 'B1'), ('A2', 'B2'), ('A3', 'B3') を追加
INSERT into tbl (COL1, COL2) values ('A1', 'B1'), ('A2', 'B2'), ('A3', 'B3');

python

df2 = pd.DataFrame([['A1', 'B1'], ['A2', 'B2'], ['A3', 'B3']], 
                   columns=['COL1', 'COL2'])
df.append(df2, ignore_index=True)

SELECT結果をINSERT

別テーブルから選択したレコードを、追加する例です。

SQL

-- tbl2でA1にマッチするレコードをtblに追加する
INSERT INTO tbl SELECT * FROM tbl2 WHERE COL1 = 'A1'

python

df.append(df2.query('COL1=="A1"'), ignore_index=True)

Discussion