#import MySQLdb import pymysql import os import json # These environment variables are configured in app.yaml. CLOUDSQL_CONNECTION_NAME = "hk-hockey:asia-east2:hk-hockey-sql" LOCAL_DB_SERVER = "mariadb.db.svc.cluster.local" CLOUDSQL_USER = "root" CLOUDSQL_WRITE_USER = "hockeyWrite" CLOUDSQL_READ_USER = "hockeyRead" CLOUDSQL_PASSWORD = "P8P1YopMlwg8TxhE" CLOUDSQL_WRITE_PASSWORD = "1URYcxXXlQ6xOWgj" CLOUDSQL_READ_PASSWORD = "o4GWrbbkBKy3oR6u" CLOUDSQL_DATABASE = "20209_hockeyResults" LOCAL_DATABASE = "hockeyResults2021" CLOUDSQL_DATABASE_STATIC = "hockeyResults" CLOUDSQL_CHARSET = "utf8" def write_cloudsql(): # When deployed to App Engine, the `SERVER_SOFTWARE` environment variable # will be set to 'Google App Engine/version'. if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'): # Connect using the unix socket located at # /cloudsql/cloudsql-connection-name. cloudsql_unix_socket = os.path.join('/cloudsql', CLOUDSQL_CONNECTION_NAME) # db = MySQLdb.connect(unix_socket=cloudsql_unix_socket, user=CLOUDSQL_WRITE_USER, passwd=CLOUDSQL_WRITE_PASSWORD, db=CLOUDSQL_DATABASE, charset=CLOUDSQL_CHARSET) db = pymysql.connect(unix_socket=cloudsql_unix_socket, user=CLOUDSQL_WRITE_USER, passwd=CLOUDSQL_WRITE_PASSWORD, db=CLOUDSQL_DATABASE, charset=CLOUDSQL_CHARSET) # If the unix socket is unavailable, then try to connect using TCP. This # will work if you're running a local MySQL server or using the Cloud SQL # proxy, for example: # # $ cloud_sql_proxy -instances=your-connection-name=tcp:3306 # else: # db = MySQLdb.connect(host='db.ipa.champion', user=CLOUDSQL_WRITE_USER, passwd=CLOUDSQL_WRITE_PASSWORD, db=CLOUDSQL_DATABASE, charset=CLOUDSQL_CHARSET) db = pymysql.connect(host=LOCAL_DB_SERVER, user=CLOUDSQL_WRITE_USER, passwd=CLOUDSQL_WRITE_PASSWORD, db=LOCAL_DATABASE, charset=CLOUDSQL_CHARSET) return db def write_cloudsql_static(): # When deployed to App Engine, the `SERVER_SOFTWARE` environment variable # will be set to 'Google App Engine/version'. if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'): # Connect using the unix socket located at # /cloudsql/cloudsql-connection-name. cloudsql_unix_socket = os.path.join('/cloudsql', CLOUDSQL_CONNECTION_NAME) # db = MySQLdb.connect(unix_socket=cloudsql_unix_socket, user=CLOUDSQL_WRITE_USER, passwd=CLOUDSQL_WRITE_PASSWORD, db=CLOUDSQL_DATABASE_STATIC, charset=CLOUDSQL_CHARSET) db = pymysql.connect(unix_socket=cloudsql_unix_socket, user=CLOUDSQL_WRITE_USER, passwd=CLOUDSQL_WRITE_PASSWORD, db=CLOUDSQL_DATABASE_STATIC, charset=CLOUDSQL_CHARSET) # If the unix socket is unavailable, then try to connect using TCP. This # will work if you're running a local MySQL server or using the Cloud SQL # proxy, for example: # # $ cloud_sql_proxy -instances=your-connection-name=tcp:3306 # else: # db = MySQLdb.connect(host='db.ipa.champion', user=CLOUDSQL_WRITE_USER, passwd=CLOUDSQL_WRITE_PASSWORD, db=CLOUDSQL_DATABASE_STATIC, charset=CLOUDSQL_CHARSET) db = pymysql.connect(host=LOCAL_DB_SERVER, user=CLOUDSQL_WRITE_USER, passwd=CLOUDSQL_WRITE_PASSWORD, db=CLOUDSQL_DATABASE_STATIC, charset=CLOUDSQL_CHARSET) return db def read_cloudsql(): # When deployed to App Engine, the `SERVER_SOFTWARE` environment variable # will be set to 'Google App Engine/version'. if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'): # Connect using the unix socket located at # /cloudsql/cloudsql-connection-name. cloudsql_unix_socket = os.path.join('/cloudsql', CLOUDSQL_CONNECTION_NAME) # db = MySQLdb.connect(unix_socket=cloudsql_unix_socket, user=CLOUDSQL_READ_USER, passwd=CLOUDSQL_READ_PASSWORD, db=CLOUDSQL_DATABASE, charset=CLOUDSQL_CHARSET) db = pymysql.connect(unix_socket=cloudsql_unix_socket, user=CLOUDSQL_READ_USER, passwd=CLOUDSQL_READ_PASSWORD, db=CLOUDSQL_DATABASE, charset=CLOUDSQL_CHARSET) # If the unix socket is unavailable, then try to connect using TCP. This # will work if you're running a local MySQL server or using the Cloud SQL # proxy, for example: # # $ cloud_sql_proxy -instances=your-connection-name=tcp:3306 # else: # db = MySQLdb.connect(host='db.ipa.champion', user=CLOUDSQL_READ_USER, passwd=CLOUDSQL_READ_PASSWORD, db=CLOUDSQL_DATABASE, charset=CLOUDSQL_CHARSET) db = pymysql.connect(host=LOCAL_DB_SERVER, user=CLOUDSQL_READ_USER, passwd=CLOUDSQL_READ_PASSWORD, db=LOCAL_DATABASE, charset=CLOUDSQL_CHARSET) return db def read_cloudsql_static(): # When deployed to App Engine, the `SERVER_SOFTWARE` environment variable # will be set to 'Google App Engine/version'. if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'): # Connect using the unix socket located at # /cloudsql/cloudsql-connection-name. cloudsql_unix_socket = os.path.join('/cloudsql', CLOUDSQL_CONNECTION_NAME) # db = MySQLdb.connect(unix_socket=cloudsql_unix_socket, user=CLOUDSQL_READ_USER, passwd=CLOUDSQL_READ_PASSWORD, db=CLOUDSQL_DATABASE_STATIC, charset=CLOUDSQL_CHARSET) db = pymysql.connect(unix_socket=cloudsql_unix_socket, user=CLOUDSQL_READ_USER, passwd=CLOUDSQL_READ_PASSWORD, db=CLOUDSQL_DATABASE_STATIC, charset=CLOUDSQL_CHARSET) # If the unix socket is unavailable, then try to connect using TCP. This # will work if you're running a local MySQL server or using the Cloud SQL # proxy, for example: # # $ cloud_sql_proxy -instances=your-connection-name=tcp:3306 # else: # db = MySQLdb.connect(host='db.ipa.champion', user=CLOUDSQL_READ_USER, passwd=CLOUDSQL_READ_PASSWORD, db=CLOUDSQL_DATABASE_STATIC, charset=CLOUDSQL_CHARSET) db = pymysql.connect(host=LOCAL_DB_SERVER, user=CLOUDSQL_READ_USER, passwd=CLOUDSQL_READ_PASSWORD, db=CLOUDSQL_DATABASE_STATIC, charset=CLOUDSQL_CHARSET) return db def sql_write(sql_cmd): try: db = write_cloudsql() # cursor = db.cursor(MySQLdb.cursors.DictCursor) cursor = db.cursor(pymysql.cursors.DictCursor) cursor.execute(sql_cmd) db.commit() except Exception as e: print(e) finally: cursor.close() db.close() return db def sql_write_static(sql_cmd): try: db = write_cloudsql_static() # cursor = db.cursor(MySQLdb.cursors.DictCursor) cursor = db.cursor(pymysql.cursors.DictCursor) cursor.execute(sql_cmd) db.commit() except Exception as e: print(e) finally: cursor.close() db.close() return db def sql_read(sql_cmd): try: db = read_cloudsql() # cursor = db.cursor(MySQLdb.cursors.DictCursor) cursor = db.cursor(pymysql.cursors.DictCursor) cursor.execute(sql_cmd) rows = cursor.fetchall() except Exception as e: print(e) rows = '' finally: cursor.close() db.close() return rows def sql_read_static(sql_cmd): try: db = read_cloudsql_static() # cursor = db.cursor(MySQLdb.cursors.DictCursor) cursor = db.cursor(pymysql.cursors.DictCursor) cursor.execute(sql_cmd) rows = cursor.fetchall() except Exception as e: print(e) rows = '' finally: cursor.close() db.close() return rows