|
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