# perldoc > DBD::Gofer::Policy::Base

---
type: CommandReference
command: DBD::Gofer::Policy::Base
mode: perldoc
section: ""
source: perldoc
---

## Quick Reference

- `$dbh = DBI->connect("dbi:Gofer:transport=...;policy=...", ...)` — connect with a policy class
- Use `DBD::Gofer::Policy::pedantic` for maximum transparency (slowest)
- Use `DBD::Gofer::Policy::classic` for reasonable compromise (default)
- Use `DBD::Gofer::Policy::rush` for fastest performance (may require code changes)
- Override individual policy items by passing `go_<policy_name>` attributes to DBI methods

## Name

`DBD::Gofer::Policy::Base` — Base class for `DBD::Gofer` policies

## Synopsis

`$dbh = DBI->connect("dbi:Gofer:transport=...;policy=...", ...)`

## Policy Classes

- `DBD::Gofer::Policy::pedantic` — most transparent, slowest (more round-trips)
- `DBD::Gofer::Policy::classic` — reasonable compromise, default policy
- `DBD::Gofer::Policy::rush` — fastest, may require code changes in applications

Start testing with `pedantic`, then switch to `classic` or a custom policy.

## Policy Items

Policy items are documented only in the source code. They are implemented as methods in the base class. In many cases, methods receive parameters related to the current `DBD::Gofer` execution, enabling dynamic behavior.

## Policy Customization

Three ways to customize policies:

- Subclass existing policy classes to influence overall behavior.
- Override individual policy items by passing `go_<policy_name>` attributes to DBI methods from application code.
- Implement dynamic behavior by overriding the policy item methods themselves (they receive contextual parameters).

## See Also

- `DBD::Gofer`
- `DBD::Gofer::Policy::pedantic`
- `DBD::Gofer::Policy::classic`
- `DBD::Gofer::Policy::rush`