def execute_cypher_query(driver, query, params=None):
    """ Given `neo4j.Driver` instance and `query` str, execute `query` via
    the `driver` in a session, returning the `neo4j.BoltStatementResult` object
    that results.

    Args:
        driver (neo4j.Driver): instance of database driver
        query (str): Cypher query to execute
        params (dict): Neo4j parameters that are substituted into `query`
    Returns:
        (neo4j.BoltStatementResult): the result object
    """
    with driver.session() as session:
        result = session.run(query, parameters=params)
        return result