|
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