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()というメソッドを使用することでデータフレームをそのままテーブルとして保存することができるのでとても便利ですね

 

to_sql()の引数の設定については以下の記事で詳細に解説しているので参考にしていただければと思います。

 

関連記事:【Pandas】データフレームをMySQLのテーブルに追加する

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

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

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

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

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

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

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