Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c311bc3

Browse files
authored
Update functions/sql example to use more clear connection logic. (GoogleCloudPlatform#2486)
1 parent 5e0d4cf commit c311bc3

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

functions/sql/mysql_sample.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,16 @@
1616
from os import getenv
1717

1818
import pymysql
19-
from pymysql.err import OperationalError
2019

2120
# TODO(developer): specify SQL connection details
2221
CONNECTION_NAME = getenv('MYSQL_INSTANCE', '<YOUR INSTANCE CONNECTION NAME>')
2322
DB_USER = getenv('MYSQL_USER', '<YOUR DB USER>')
2423
DB_PASSWORD = getenv('MYSQL_PASSWORD', '<YOUR DB PASSWORD>')
2524
DB_NAME = getenv('MYSQL_DATABASE', '<YOUR DB NAME>')
2625

26+
# set to true to test locally using Cloud SQL proxy listening on a TCP port
27+
DEBUG = False
28+
2729
mysql_config = {
2830
'user': DB_USER,
2931
'password': DB_PASSWORD,
@@ -56,12 +58,14 @@ def mysql_demo(request):
5658
# GCF instance. Doing so minimizes the number of active SQL connections,
5759
# which helps keep your GCF instances under SQL connection limits.
5860
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}')
6569

6670
# Remember to close SQL resources declared while running this function.
6771
# Keep any declared in global scope (e.g. mysql_conn) for later reuse.

0 commit comments

Comments
 (0)