---
name: "Class::DBI::Loader"
section: "3pm"
platform: "linux"
package: "libclass-dbi-loader-perl"
version: "0.34-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Class::DBI::Loader"
---

# Class::DBI::Loader(3pm)

Dynamic definition of Class::DBI sub classes.

## NAME

Class::DBI::Loader - Dynamic definition of Class::DBI sub classes.

## SYNOPSIS

```
  use Class::DBI::Loader;
  my $loader = Class::DBI::Loader->new(
    dsn                     => "dbi:mysql:dbname",
    user                    => "root",
    password                => "",
    options                 => { RaiseError => 1, AutoCommit => 0 },
    namespace               => "Data",
    additional_classes      => qw/Class::DBI::AbstractSearch/, # or arrayref
    additional_base_classes => qw/My::Stuff/, # or arrayref
    left_base_classes       => qw/Class::DBI::Sweet/, # or arrayref
    constraint              => '^foo.*',
    relationships           => 1,
    options                 => { AutoCommit => 1 },
    inflect                 => { child => 'children' },
    require                 => 1
  );
  my $class = $loader->find_class('film'); # $class => Data::Film
  my $obj = $class->retrieve(1);
```

use with mod\_perl

in your startup.pl

```
  # load all tables
  use Class::DBI::Loader;
  my $loader = Class::DBI::Loader->new(
    dsn       => "dbi:mysql:dbname",
    user      => "root",
    password  => "",
    namespace => "Data",
  );
```

in your web application.

```
  use strict;
  # you can use Data::Film directly
  my $film = Data::Film->retrieve($id);
```

## DESCRIPTION

Class::DBI::Loader automate the definition of Class::DBI sub-classes. scan table schemas and setup columns, primary key.

class names are defined by table names and namespace option.

```
 +-----------+-----------+-----------+
 |   table   | namespace | class     |
 +-----------+-----------+-----------+
 |   foo     | Data      | Data::Foo |
 |   foo_bar |           | FooBar    |
 +-----------+-----------+-----------+
```

Class::DBI::Loader supports MySQL, Postgres and SQLite.

See Class::DBI::Loader::Generic.

## METHODS

### new %args

- additional\_base\_classes

  List of additional base classes your table classes will use.

- left\_base\_classes

  List of additional base classes, that need to be leftmost, for example Class::DBI::Sweet (former Catalyst::Model::CDBI::Sweet).

- additional\_classes

  List of additional classes which your table classes will use.

- constraint

  Only load tables matching regex.

- exclude

  Exclude tables matching regex.

- debug

  Enable debug messages.

- dsn

  DBI Data Source Name.

- namespace

  Namespace under which your table classes will be initialized.

- password

  Password.

- options

  Optional hashref to specify DBI connect options

- relationships

  Try to automatically detect/setup has\_a and has\_many relationships.

- inflect

  An hashref, which contains exceptions to **Lingua::EN::Inflect::PL()**. Useful for foreign language column names.

- user

  Username.

- require

  Attempt to require the dynamically defined module, so that extensions defined in files. By default errors from imported modules are suppressed. When you want to debug, use require\_warn.

- require\_warn

  Warn of import errors when requiring modules.

## AUTHOR

Daisuke Maki `"dmaki@cpan.org"`

## AUTHOR EMERITUS

Sebastian Riedel, `"sri@oook.de"` IKEBE Tomohiro, `"ikebe@edge.co.jp"`

## THANK YOU

Adam Anderson, Andy Grundman, Autrijus Tang, Dan Kubb, David Naughton, Randal Schwartz, Simon Flack and all the others who've helped.

## LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

## SEE ALSO

Class::DBI, Class::DBI::mysql, Class::DBI::Pg, Class::DBI::SQLite, Class::DBI::Loader::Generic, Class::DBI::Loader::mysql, Class::DBI::Loader::Pg, Class::DBI::Loader::SQLite
