# hooks

The second required parameter for all `run` functions is `hooks`:

{% tabs %}
{% tab title="Class-based tasks" %}

```python
# modules/hello_world.py

import prism.task
import prism.target

class HelloWorld(prism.task.PrismTask):
    
    def run(self, tasks, hooks):
        test_str = "Hello, world!"
        return test_str
```

{% endtab %}

{% tab title="Function-based tasks" %}

```python
# modules/hello_world.py

from prism.decorators import task

@task()
def hello_world(tasks, hooks):
    test_str = "Hello, world!"
    return test_str
```

{% endtab %}
{% endtabs %}

This parameter is an instance of the `PrismHooks` class, a high-level interface that lets you quickly and easily talk to external connections without having to write low-level code or use special libraries.

The following hooks are available to Prism users:

* [`hooks.sql()`](https://docs.runprism.com/v0.2.0rc2/fundamentals/tasks/hooks/hooks.sql): execute SQL code using specific adapters
* [`hooks.spark()`](https://docs.runprism.com/v0.2.0rc2/fundamentals/tasks/hooks/hooks.spark): execute PySpark code
* [`hooks.dbt_ref()`](https://docs.runprism.com/v0.2.0rc2/fundamentals/tasks/hooks/hooks.dbt_ref): convert materialized dbt models into Pandas DataFrames
* `hooks.get_connection()`: retrieve the connection instance (for SQL adapters)
* `hooks.get_cursor()`: retrieve a cursor instance (for SQL adapters)
