見出し画像

Google App EngineからCloud SQLのpostgres dbに接続する

はじめに

@yutakikuchi_です。
Google App Engine(GAE)からCloud SQLのpostgres dbにpythonで接続する際の方法を記載します。尚、ここでの例ではpythonからdbに接続するライブラリをpsycopg2を利用しています。

接続方法

接続の仕方は非常にシンプルです。GAEからUnixsocketを利用してCloud SQLに接続をします。Unixsocketのpath指定はpsycopg2のconnect methodの中でパラメータとしてhostを指定をするだけです。Unixsocketのpathは /cloudsql/<DB接続名> となっており、<DB接続名> の部分をGoogle Cloud ConsoleのCloud SQLの欄に記載されている接続名の文字列をコピペするだけです。※尚、接続方法としてはpostgres dbのpublic ipに対して行おうとしています。

例えば、DB接続名が xxx:us-central1:yyy のような文字列だった場合、Unixsocketのpathは/cloudsql/xxx:us-central1:yyy となり、psycopg2の場合は自動的に接尾辞をつけて、/cloudsql/xxx:us-central1:yyy/.s.PGSQL.5432 のようにUnixsocketのpathを生成してくれます。よって、pythonによる接続clientとしてのコードですが、下記のhost変数に/cloudsql/xxx:us-central1:yyyまでを指定します。

Pythonのサンプルコード

import psycopg2

#  .. 途中略 .. 

class db_connect:
  db_host = '/cloudsql/xxx:us-central1:yyy'

#  .. 途中略 .. 

    def get_connection(self):
      self.conn = psycopg2.connect(
        database=self.db_name, 
        user=self.db_user, 
        password=self.db_pass, 
        host=self.db_host, 
        port=self.db_port)
        return self.conn


いいなと思ったら応援しよう!