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