今回は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()というメソッドを使用することでデータフレームをそのままテーブルとして保存することができるのでとても便利ですね
to_sql()の引数の設定については以下の記事で詳細に解説しているので参考にしていただければと思います。
関連記事:【Pandas】データフレームをMySQLのテーブルに追加する

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