GCP

【Python】SqlAlchemyでCloudSQLにデータフレームをテーブル保存する

この記事は約3分で読めます。

 

今回はSqlAlchemyを使ってCloudSQLのデータベースに対してPythonのPandasで作成したデータフレームをテーブルとして保存する方法について紹介したいと思います

 

前準備

 

インスタンスとデータベースは作成している前提で進めます。

 

CloudSQLの設定

 

まずはCloudSQLへアクセスするPCのIPを登録する必要があります。現在使用しているPCのIPアドレスはPython経由だと以下のようにして確認できます。

 

# 通常のアクセスの場合
import requests
res = requests.get('https://ipinfo.io').json()
print(res)

 

これで表示されたIPをcloudSQLのホーム画面から→「接続」→「ネットワーキング」の「承認済みネットワーク」に適当なラベルを付けて登録します。これで準備完了です。

 

 

ライブラリのインストール

 

次に以下のモジュールをインストールする必要があります。(MACの場合はpip3)

 

$ pip install sqlalchemy
$ pip install PyMySQL

 

特にPyMySQLをインストールしていないとImportError: No module named ‘pymysql’ というエラーになるので注意してください

 

SQLAlchemyでCloudSQLのDBに接続する

 

以下がSQLAlchemyでCloudSQLのDBに接続してデータを保存するサンプルコードになります。ここで使用しているデータベース名とインスタンスのIPは「概要」→ 「このインスタンスとの接続」の部分に記載されているIPアドレス、データベースは「データベース」にある一覧のいずれかを指定してください

 

import sqlalchemy
import pandas as pd

df = pd.DataFrame([[1,2,3], [1,2,3],[1,2,3],[1,2,3]], columns=['a','b','c'])
db_user = '<user_id>'
db_pass = '<password>'
db_name = '<db_name>'
instance_ip = '11.111.111.11'

#アクセス先の指定&エンジン設定
url = f'mysql+pymysql://{db_user}:{db_pass}@{instance_ip}/{db_name}?charset=utf8'
engine = sqlalchemy.create_engine(url, echo=True)

# データフレームを指定したDBに新規テーブルとして追加する
df.to_sql("<table_name>", engine, index=None)

 

sqlalchemyではto_sql()というメソッドを使用することでデータフレームをそのままテーブルとして保存することができるのでとても便利ですね

 

 

 

コメント

  1. […] 関連記事:【Python】SqlAlchemyでCloudSQLにデータフレームをテーブル保存する […]

  2. […] 関連記事:【Python】SqlAlchemyでCloudSQLにデータフレームをテーブル保存する […]

  3. […] 関連記事:【Python】SqlAlchemyでCloudSQLにデータフレームをテーブル保存する […]

タイトルとURLをコピーしました