Python

Python dataframeからMySQLにinsertする

投稿日:

目的

pythonのdataframeはデータの前処理に大変便利で、前処理した後にそのままDBに挿入したい時が多々あります。今回はMySQLで試します。

環境

Python 3.7.3
MySQL 5.5.62

Step1 : 挿入先テーブル用意

以下のようにテスト用のテーブルを定義します。

> CREATE DATABASE testdb;
> CREATE TABLE testdb.mysql_table(
	col1 int
	,col2 int
	,col3 int
  );

Step2 : 挿入用データ準備

Pythonから挿入するためのデータを準備します。pandasのDataFrameで挿入先テーブルの型にあったデータを用意します。注意点として、データフレーム側に挿入先カラムと同じ名称のカラム名をセットしておかないと、挿入時にエラーが発生しますので、忘れずにセットします。

import pandas as pd
df = pd.DataFrame([[1,2,3],[4,5,6]],columns=['col1','col2','col3'])
print(df)
#結果
   0  1  2
0  1  2  3
1  4  5  6

Step3 : MySQLへの挿入

データフレーム型のデータをMySQLへ挿入するためにsqlalchemyを使用します。sqlalchemyのcreate _engineメソッドで接続情報を定義します。user,passwordやhost,databaseについては接続するMySQL側の適切な値を書きます。

from sqlalchemy import create_engine

#engine = create_engine('mysql://<user>:<password>@<host>/<database>?charset=utf8')
engine = create_engine('mysql://user:password@localhost/test_db?charset=utf8')

#df.to_sql(<table_name>,con=engine, if_exists='append', index=False)
df.to_sql('testdb.mysq_table',con=engine, if_exists='append', index=False)
#結果
   col1  col2  col3
0     1     2     3
1     4     5     6

無事に挿入できました。

補足

sqlalchemyを使用し、to_sqlで挿入する方法ですが、もしデータベース側にテーブルが存在していない場合は、テーブルを自動作成した上で挿入してくれます。これは非常に便利です。

-Python
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Python 辞書型の基本

Contents1 目的2 辞書型データの作成3 要素の取り出し4 全キーの取得5 全値の取得6 全キーおよび値の取得7 リスト型から辞書型への変換8 キーの有無確認9 要素の追加10 要素の削除11 …

【Python】階乗と順列と組合せ

Contents1 目的2 階乗の計算方法3 順列の計算4 組合せの計算5 まとめ 目的 統計的なデータ分析アプローチの中には確率的な考え方も多く使われます。今回は確率的な手法を用いる際に必要となる基 …

CentOSからAnacondaアンインストール

Contents1 目的2 Step1 : .pyenvの削除3 Step2 : bash_profileのpathの削除4 Step3 : .condaの削除5 Step4 : 確認 目的 以下の記 …

WindowsのJupyterに外部からアクセスする

Contents1 目的2 環境3 Step1 : パスワードのハッシュ化4 Step 2 : configファイルの設定5 Step3 : Jupyter Notebookの起動6 Step4 : …

Python scikit-learnのImportError

Anaconda3でscikit-learnのdatasetsのimport時にエラーが出たため、対処法についてメモ Contents1 環境2 エラー3 対処 環境 ①OSWindows10 ②An …

言語切り替え

カテゴリー