Name

Connector::Proxy::DBI

Description

Use DBI to make a query to a database.

Usage

Configuration

my $con = Connector::Proxy::DBI->new({
    LOCATION => 'DBI:mysql:database=openxpki;host=localhost',
    dbuser => 'queryuser',
    password => 'verysecret',
    table => 'mytable',
    column => 1,
    condition => 'id = ?',
    ambiguous => 'die',
});

Parameters

dbuser
password
table

The name of the table, can also be a JOIN clause (if supported by the driver).

column

For get/get_list the name of a single column to be returned.

For get_hash a hash where the keys are the target keys of the resulting hash and the values are the column names.

condition

The condition using a question mark as placeholder. The placeholder(s) are fed from the path components.

ambigous

Controls the behaviour of the connector if more than one result is found when a single one is expected (get/get_hash).

empty (default)

Return an empty result, will also die if die_on_undef is set.

return

The potential ambiguity is ignored and the first row fetched is returned. Note that depending on the database backend the actual result returned from the is very likely undetermined.

die

Die with an error message.

Methods

get

Will return the value of the requested column of the matching row. If no row is found, undef is returned (dies if die_on_undef is set).

If multiple rows are found, behaviour depends on the value of ambiguous.

get_list

Will return the selected column of all matching lines as a list. If no match is found undef is returned (dies if die_on_undef is set).

get_meta

Will return scalar if the query has one result or list if the query has multiple rows. Returns undef if no rows are found.

get_hash

Return a single row as hashref, by default all columns are returned as retrieved from the database. Pass a hashref to column, where the key is the target key and the value is the name of the column you need.

E.g. when your table has the columns id and name but you need the keys index and title in your result.

$con->column({ 'id' => 'id', '`index`' => 'id', 'title' => 'name' });

Note: The mapping is set directly on the sql layer and as escaping reserved words is not standardized, we dont do it. You can add escape characters yourself to the column map where required, as shown for the word "index" in the given example.

get_keys

not supported