16
16
from os import getenv
17
17
18
18
import pymysql
19
- from pymysql .err import OperationalError
20
19
21
20
# TODO(developer): specify SQL connection details
22
21
CONNECTION_NAME = getenv ('MYSQL_INSTANCE' , '<YOUR INSTANCE CONNECTION NAME>' )
23
22
DB_USER = getenv ('MYSQL_USER' , '<YOUR DB USER>' )
24
23
DB_PASSWORD = getenv ('MYSQL_PASSWORD' , '<YOUR DB PASSWORD>' )
25
24
DB_NAME = getenv ('MYSQL_DATABASE' , '<YOUR DB NAME>' )
26
25
26
+ # set to true to test locally using Cloud SQL proxy listening on a TCP port
27
+ DEBUG = False
28
+
27
29
mysql_config = {
28
30
'user' : DB_USER ,
29
31
'password' : DB_PASSWORD ,
@@ -56,12 +58,14 @@ def mysql_demo(request):
56
58
# GCF instance. Doing so minimizes the number of active SQL connections,
57
59
# which helps keep your GCF instances under SQL connection limits.
58
60
if not mysql_conn :
59
- try :
60
- mysql_conn = pymysql .connect (** mysql_config )
61
- except OperationalError :
62
- # If production settings fail, use local development ones
63
- mysql_config ['unix_socket' ] = f'/cloudsql/{ CONNECTION_NAME } '
64
- mysql_conn = pymysql .connect (** mysql_config )
61
+ if DEBUG :
62
+ # try to connect using localling running Cloud SQL proxy
63
+ # (local development only)
64
+ mysql_conn = pymysql .connect (
65
+ ** mysql_config , host = '127.0.0.1' , port = 3306 )
66
+ else :
67
+ mysql_conn = pymysql .connect (
68
+ ** mysql_config , unix_socket = f'/cloudsql/{ CONNECTION_NAME } ' )
65
69
66
70
# Remember to close SQL resources declared while running this function.
67
71
# Keep any declared in global scope (e.g. mysql_conn) for later reuse.
0 commit comments