"""Generic Mysql connection and execute class for lambda.""" from os import environ import pymysql def _connection(**params): """Mysql connection for database module functions. Args: params (dict): additional or overriding connect parameters. Returns: MySQLdb.connection: connection object. """ db_params = { 'host': environ.get('DATASTORE_HOST'), 'user': environ.get('DATASTORE_USER'), 'passwd': environ.get('DATASTORE_PASS'), 'db': environ.get('DATASTORE_NAME'), 'port': int(environ.get('DATASTORE_PORT') or 0)} db_params.update(params) return pymysql.connect(**db_params) def execute(sql, params=None): """Query execution function. This is for one-off style executions that do not need finer control with features like rollbacks or fetching from cursors. Args: sql (str): Query to run. params (dict): Params matching the sql. Returns: mixed: query specific, or None """ conn = _connection() with conn.cursor() as cursor: cursor.execute(sql, params) conn.commit() return cursor